CMAKE_C_FLAGS仅包含所有构建类型的通用编译标志。如何在CMakeLists.txt中获取当前构建类型的所有编译标志?因此,当CMAKE_BUILD_TYPE为“发布”时,我想从CMAKE_C_FLAGS和CMAKE_C_FLAGS_RELEASE中获取所有标志。
答案 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}}"
获取当前构建类型的所有标志。