在CMake中打印所有变量

在CMake中,有时我们需要打印所有的变量及其值,以便调试和理解构建过程。CMake提供了一些方法来实现这一点,包括打印自定义变量和环境变量。

打印自定义变量及其值

要打印所有自定义变量及其值,可以使用get_cmake_property函数获取所有变量的名称,然后使用foreach循环遍历这些变量并打印它们的值。以下是一个示例代码:

get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
 

这个代码片段首先使用get_cmake_property函数获取所有变量的名称,并将它们存储在_variableNames变量中。然后,使用foreach循环遍历这些变量,并使用message命令打印每个变量的名称和值。

打印环境变量及其值

要打印所有环境变量及其值,可以使用execute_process命令执行CMake的-E environment命令。以下是一个示例代码:

execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "environment")
 

这个代码片段使用execute_process命令执行CMake的-E environment命令,该命令会打印所有环境变量及其值。

示例函数

为了方便使用,可以将上述代码封装到一个函数中,并且可以选择使用正则表达式来仅打印具有匹配名称的变量的子集。以下是一个示例函数:

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()
 

这个函数首先获取所有变量的名称,并对它们进行排序。然后,使用foreach循环遍历这些变量,并根据传入的正则表达式参数(如果有)进行匹配,最后打印匹配的变量及其值

通过这些方法,您可以轻松地在CMake中打印所有变量及其值,以便更好地理解和调试构建过程。

posted @ 2025-11-12 10:15  z.seven  阅读(3)  评论(0)    收藏  举报