diff --git a/CMakeLists.txt b/CMakeLists.txt index 91a6462012..fe43ce03b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,8 @@ endif() include(cmake/OpenCVUtils.cmake) +ocv_cmake_eval(DEBUG_PRE ONCE) + ocv_clear_vars(OpenCVModules_TARGETS) # ---------------------------------------------------------------------------- @@ -1107,3 +1109,7 @@ endif() # ---------------------------------------------------------------------------- include(cmake/OpenCVPackaging.cmake) + +# This should be the last command +ocv_cmake_dump_vars("" TOFILE "CMakeVars.txt") +ocv_cmake_eval(DEBUG_POST ONCE) diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake index 0241c43c1c..093e8b7858 100644 --- a/cmake/OpenCVUtils.cmake +++ b/cmake/OpenCVUtils.cmake @@ -11,6 +11,47 @@ if(NOT COMMAND find_host_program) endmacro() endif() +if(NOT COMMAND cmake_parse_arguments) + include(CMakeParseArguments OPTIONAL) # CMake 2.8.3+ +endif() + +# Debugging function +function(ocv_cmake_dump_vars) + set(VARS "") + get_cmake_property(_variableNames VARIABLES) + if(COMMAND cmake_parse_arguments222) + cmake_parse_arguments(DUMP "" "TOFILE" "" ${ARGN}) + set(regex "${DUMP_UNPARSED_ARGUMENTS}") + else() + set(regex "${ARGV0}") + if(ARGV1 STREQUAL "TOFILE") + set(DUMP_TOFILE "${ARGV2}") + endif() + endif() + string(TOLOWER "${regex}" regex_lower) + foreach(_variableName ${_variableNames}) + string(TOLOWER "${_variableName}" _variableName_lower) + if(_variableName MATCHES "${regex}" OR _variableName_lower MATCHES "${regex_lower}") + set(VARS "${VARS}${_variableName}=${${_variableName}}\n") + endif() + endforeach() + if(DUMP_TOFILE) + file(WRITE ${CMAKE_BINARY_DIR}/${DUMP_TOFILE} "${VARS}") + else() + message(AUTHOR_WARNING "${VARS}") + endif() +endfunction() + +function(ocv_cmake_eval var_name) + if(DEFINED ${var_name}) + file(WRITE "${CMAKE_BINARY_DIR}/CMakeCommand-${var_name}.cmake" ${${var_name}}) + include("${CMAKE_BINARY_DIR}/CMakeCommand-${var_name}.cmake") + endif() + if(";${ARGN};" MATCHES ";ONCE;") + unset(${var_name} CACHE) + endif() +endfunction() + # assert macro # Note: it doesn't support lists in arguments # Usage samples: