CMake CONFIG 生成器表达式
cmake 的 CONFIG
生成器表达式有两种形式,一种是不接受参数、输出当前的 CONFIG 值,还有一种是判断当前的 CONFIG 是否属于几者之一。在判断 Debug 模式的时候一定要小心,因为使用 Makefile 作为生成器时,不传入 CMAKE_BUILD_TYPE
时使用的 CONFIG 为空。
target_compile_options(YourTarget PRIVATE
-Wall
$<$<CONFIG:,Debug>:-g3>
)
不过,也可以通过显式设置 CMAKE_BUILD_TYPE
来防范就是了:
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Debug")
endif()
这样之后再用生成表达式创建自定义 target 打印 $<CONFIG>
的结果就是 Debug。
如果不显式设置,则会使用编译器特定的默认编译模式,这个就说不清楚了。