Skip to content

Commit 5cead19

Browse files
committed
Merge pull request opencv#7742 from alalek:backport_5884
2 parents 7e38a2f + 5ac15f0 commit 5cead19

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ endif()
7373

7474
include(cmake/OpenCVUtils.cmake)
7575

76+
ocv_cmake_eval(DEBUG_PRE ONCE)
77+
7678
ocv_clear_vars(OpenCVModules_TARGETS)
7779

7880
# ----------------------------------------------------------------------------
@@ -1107,3 +1109,7 @@ endif()
11071109
# ----------------------------------------------------------------------------
11081110

11091111
include(cmake/OpenCVPackaging.cmake)
1112+
1113+
# This should be the last command
1114+
ocv_cmake_dump_vars("" TOFILE "CMakeVars.txt")
1115+
ocv_cmake_eval(DEBUG_POST ONCE)

cmake/OpenCVUtils.cmake

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,47 @@ if(NOT COMMAND find_host_program)
1111
endmacro()
1212
endif()
1313

14+
if(NOT COMMAND cmake_parse_arguments)
15+
include(CMakeParseArguments OPTIONAL) # CMake 2.8.3+
16+
endif()
17+
18+
# Debugging function
19+
function(ocv_cmake_dump_vars)
20+
set(VARS "")
21+
get_cmake_property(_variableNames VARIABLES)
22+
if(COMMAND cmake_parse_arguments222)
23+
cmake_parse_arguments(DUMP "" "TOFILE" "" ${ARGN})
24+
set(regex "${DUMP_UNPARSED_ARGUMENTS}")
25+
else()
26+
set(regex "${ARGV0}")
27+
if(ARGV1 STREQUAL "TOFILE")
28+
set(DUMP_TOFILE "${ARGV2}")
29+
endif()
30+
endif()
31+
string(TOLOWER "${regex}" regex_lower)
32+
foreach(_variableName ${_variableNames})
33+
string(TOLOWER "${_variableName}" _variableName_lower)
34+
if(_variableName MATCHES "${regex}" OR _variableName_lower MATCHES "${regex_lower}")
35+
set(VARS "${VARS}${_variableName}=${${_variableName}}\n")
36+
endif()
37+
endforeach()
38+
if(DUMP_TOFILE)
39+
file(WRITE ${CMAKE_BINARY_DIR}/${DUMP_TOFILE} "${VARS}")
40+
else()
41+
message(AUTHOR_WARNING "${VARS}")
42+
endif()
43+
endfunction()
44+
45+
function(ocv_cmake_eval var_name)
46+
if(DEFINED ${var_name})
47+
file(WRITE "${CMAKE_BINARY_DIR}/CMakeCommand-${var_name}.cmake" ${${var_name}})
48+
include("${CMAKE_BINARY_DIR}/CMakeCommand-${var_name}.cmake")
49+
endif()
50+
if(";${ARGN};" MATCHES ";ONCE;")
51+
unset(${var_name} CACHE)
52+
endif()
53+
endfunction()
54+
1455
# assert macro
1556
# Note: it doesn't support lists in arguments
1657
# Usage samples:

0 commit comments

Comments
 (0)