CMake中列出所有变量的值
1. 在CMakelists.txt中打印所有变量
参考:https://stackoverflow.com/a/9328525/19344463
使用get_cmake_property指令,用循环打印所有变量的值
1 2 3 4 5
| get_cmake_property(_variableNames VARIABLES) list (SORT _variableNames) foreach (_variableName ${_variableNames}) message(STATUS "${_variableName}=${${_variableName}}") endforeach()
|
也可以定义一个方便的函数,并用正则表达式来过滤出需要的变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function(dump_cmake_variables) get_cmake_property(_variableNames VARIABLES) list (SORT _variableNames) foreach (_variableName ${_variableNames}) if (ARGV0) unset(MATCHED) string(REGEX MATCH ${ARGV0} MATCHED ${_variableName}) if (NOT MATCHED) continue() endif() endif() message(STATUS "${_variableName}=${${_variableName}}") endforeach() endfunction()
|
如果需要打印环境变量,则可以使用CMake的命令行指令
1
| execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "environment")
|
参考:https://stackoverflow.com/a/66876743/19344463
如果需要打印某个路径下的所有变量,可以使用get_property
1 2 3 4 5 6 7 8 9 10 11 12 13
| function(print_directory_variables dir) get_property(_variableNames DIRECTORY ${dir} PROPERTY VARIABLES) list (SORT _variableNames) foreach (_variableName ${_variableNames}) get_directory_property(_variableValue DIRECTORY ${dir} DEFINITION ${_variableName}) message(STATUS "DIR ${dir}: ${_variableName}=${_variableValue}") endforeach() endfunction(print_directory_variables)
print_directory_variables(.) print_directory_variables(ui/qt)
|
2. 使用命令行打印缓存的变量
参考:https://stackoverflow.com/a/18839117/19344463
如果只需要打印缓存的变量(不包含未缓存的变量和特殊变量,如WIN32, UNIX, APPLE等),可以进入build目录后使用以下命令