如何检查CMake构建目录构建类型是Debug还是Release?

jte*_*erm 6 cmake

我知道构建类型可以使用-DCMAKE_BUILD_TYPE=Release或者设置,-DCMAKE_BUILD_TYPE=Debug但有没有命令行方式来检查/确认CMake正在使用哪种构建类型?

Flo*_*ian 7

除了查看CMakeCache.txt你可以 - 在构建目录中 - 使用

cmake -L . | grep CMAKE_BUILD_TYPE
...
CMAKE_BUILD_TYPE:STRING=Release
Run Code Online (Sandbox Code Playgroud)

或者你可以如定制的目标添加到您CMakeLists.txt做这件事

add_custom_target(print_build_type COMMAND ${CMAKE_COMMAND} -E echo ${CMAKE_BUILD_TYPE})
Run Code Online (Sandbox Code Playgroud)

然后会用类似的东西调用

$ make --silent print_build_type
Release
Run Code Online (Sandbox Code Playgroud)

CMAKE_BUILD_TYPE可能是空的.

所以这是一个使用生成器表达式的更通用的版本:

add_custom_target(
    print_build_type 
    COMMAND ${CMAKE_COMMAND} -E echo $<$<CONFIG:>:Undefined>$<$<NOT:$<CONFIG:>>:$<CONFIG>>
)
Run Code Online (Sandbox Code Playgroud)

参考