我想知道是否有一种方法可以打印出CMake中所有可访问的变量。我对CMake变量不感兴趣-比如--help-variables
选项。我说的是我定义的变量,或者由包含的脚本定义的变量。
我目前包括:
INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityCXX.cmake)
字符串
我希望我可以打印出这里所有的变量,而不必遍历所有的文件,阅读可用的内容-我可能会发现一些我不知道的变量,这可能是有用的。这将有助于学习和发现。这是严格用于调试/开发。
这与 * Print all local variables accessible to the current scope in Lua * 中的问题类似,但针对CMake!
有人这么做过吗?
7条答案
按热度按时间hiz5n14c1#
使用
get_cmake_property
函数,以下循环将打印出所有定义的CMake变量及其值:字符串
这也可以嵌入到一个方便的函数中,该函数可以选择性地使用正则表达式来仅打印具有匹配名称的变量的子集
型
或者,以更紧凑的形式:
型
要打印环境变量,请使用CMake的命令模式:
型
neekobn82#
另一种方法是简单地用途:
字符串
来自manpage:
第一个月
列出非高级缓存变量。
列表缓存变量将运行CMake并列出CMake缓存中未标记为
INTERNAL
或ADVANCED
的所有变量。这将有效地显示当前CMake设置[...]。如果指定了
A
,那么它也将显示高级变量。如果指定了
H
,它还将显示每个变量的帮助。t98cgbkg3#
**
ccmake
**是一个很好的交互式选项,可以交互式地检查缓存变量(option(
或set( CACHE
:字符串
的数据
pw136qt24#
查看所有cmake内部变量的另一种方法是使用
--trace-expand
选项执行cmake。这将给予所有执行的.cmake文件和每行设置的变量的跟踪。
6ovsh4lw5#
基于@sakra
字符串
变量名区分大小写
顺便说一句,如果你对boost感兴趣,它是
Boost_INCLUDE_DIRS
而不是BOOST_INCLUDE_DIRS
,它是Boost_LIBRARIES
而不是BOOST_LIBRARIES
,而且我错误地使用了BOOST_LIBRARIES而不是Boost_LIBRARIES,https://cmake.org/cmake/help/v3.0/module/FindBoost.html,boost更好的例子:型
vfhzx4xs6#
可以使用message:
字符串
dxxyhpgq7#
目前的答案都不允许我看到我的项目中的变量。这里有一个解决方案:
字符串