我想知道是否有办法在CMake中打印出所有可访问的变量.我对CMake变量不感兴趣 - 就像在--help-variables选项中一样.我在谈论我定义的变量,或者包含脚本定义的变量.
我现在包括
INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityCXX.cmake)
Run Code Online (Sandbox Code Playgroud)
而且我希望我能打印出这里的所有变量,而不是必须浏览所有文件并阅读可用的内容 - 我可能会发现一些我不知道的变量可能有用.帮助学习和发现会很好.它严格用于调试/开发.
这类似于打印Lua中当前作用域可访问的所有局部变量中的问题,但对于CMake!
有没有人这样做过?
sak*_*kra 334
使用get_cmake_property函数,以下循环将打印出定义的所有CMake变量及其值:
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
Run Code Online (Sandbox Code Playgroud)
要打印环境变量,请使用CMake的命令模式:
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()
Run Code Online (Sandbox Code Playgroud)
jts*_*ata 166
另一种方法是简单地使用:
cmake -LAH
Run Code Online (Sandbox Code Playgroud)
从联机帮助页:
-L[A][H]列出非高级缓存变量.
列表缓存变量将运行CMake并列出CMake缓存中未标记为INTERNAL或ADVANCED的所有变量.这将有效地显示当前的CMake设置[...].
如果指定了A,则它还将显示高级变量.
如果指定了H,它还将显示每个变量的帮助.
ccmake是交互式检查缓存变量的一个很好的交互选项(option(或set( CACHE:
sudo apt-get install cmake-curses-gui
mkdir build
cd build
cmake ..
ccmake ..
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
119684 次 |
| 最近记录: |