如何获取当前构建类型的所有编译标志

时间:2018-08-09 14:07:52

标签: cmake

CMAKE_C_FLAGS仅包含所有构建类型的通用编译标志。如何在CMakeLists.txt中获取当前构建类型的所有编译标志?因此,当CMAKE_BUILD_TYPE为“发布”时,我想从CMAKE_C_FLAGS和CMAKE_C_FLAGS_RELEASE中获取所有标志。

2 个答案:

答案 0 :(得分:0)

CMakeCache.txt中,还有一些以CMAKE_C_FLAGS_<config>命名的变量:

cat CMakeCache.txt | ack CMAKE_C_FLAGS
CMAKE_C_FLAGS:STRING=
CMAKE_C_FLAGS_DEBUG:STRING=-g
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG

请注意,根据构建系统的设置方式,这些缓存变量可能不会列出有效使用的所有标志。

答案 1 :(得分:0)

可以定义新变量

string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER)

,然后使用"${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}"获取当前构建类型的所有标志。