diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9a9e144ad..9998b76d2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -112,6 +112,7 @@ endif()
 include(cmake/Modules/HandleFtdiSupport.cmake)
 include(cmake/Modules/HandleVersionGeneration.cmake)
 include(cmake/Modules/RunOnBuildDir.cmake)
+include(cmake/Modules/cmake_variables_helper.cmake)
 
 pkg_config_library(LIBXML libxml-2.0 REQUIRED)
 pkg_config_library(LIBSQLITE3 sqlite3 REQUIRED)
@@ -467,9 +468,4 @@ if (MAKE_TESTS)
 endif()
 
 # useful for debugging CMake issues
-#
-# message(STATUS "print variables")
-# get_cmake_property(_variableNames VARIABLES)
-# foreach(_variableName ${_variableNames})
-#	message(STATUS "${_variableName}=${${_variableName}}")
-# endforeach()
+# print_all_variables()
diff --git a/cmake/Modules/cmake_variables_helper.cmake b/cmake/Modules/cmake_variables_helper.cmake
new file mode 100644
index 000000000..832dd4cc8
--- /dev/null
+++ b/cmake/Modules/cmake_variables_helper.cmake
@@ -0,0 +1,44 @@
+# This file contains helper macro to print env variables as status messages
+
+# print_variable
+#
+# Prints a status message with the value of the variable
+#
+# Parameters:
+#  variableName - A string containing the name of the variable to be printed
+#
+# Usage:
+#  print_variable(CMAKE_CURRENT_BINARY_DIR)
+#
+# Output:
+#  -- CMAKE_CURRENT_BINARY_DIR=/home/xxx/xxx
+#
+macro(print_variable _variableName)
+  message(STATUS "${_variableName}=${${_variableName}}")
+endmacro()
+
+# print_all_variables
+#
+# Prints a status message for all currently defined variables.
+#
+# Parameters:
+#  none
+#
+# Usage:
+#  print_all_variable()
+#
+# Output:
+#  -- ------------------------------ print variables ------------------------------
+#  -- CMAKE_CURRENT_BINARY_DIR=/home/xxx/xxx
+#  -- ....
+#  -- -----------------------------------------------------------------------------
+#
+macro(print_all_variables)
+  message(STATUS "------------------------------ print variables ------------------------------")
+  get_cmake_property(_variableNames VARIABLES)
+
+  foreach(_variableName ${_variableNames})
+    print_variable(${_variableName})
+  endforeach()
+  message(STATUS "-----------------------------------------------------------------------------")
+endmacro()
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 14116449d..9336424eb 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -46,3 +46,6 @@ add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
 	TestPicture
 	TestMerge
 )
+
+# useful for debugging CMake issues
+# print_all_variables()