本文主要介绍CMAKE_BUILD_TYPE及其相关参数
CMAKE_BUILD_TYPE
可选值包括
- Debug:用于在没有优化的情况下,使用带有调试符号构建库或可执行文件
- Release:用于构建的优化的库或可执行文件,不包含调试符号
- RelWithDebInfo:由于构建较少的优化库或可执行文件,包含调试符号
- MinSizeRel:用于不增加目标代码大小的优化方式,来构建或可执行文件
使用方法
set(CMAKE_BUILD_TYPE "Debug") # CMakeLists.txt中指定
或者
cmake .. -D CMAKE_BUILD_TYPE="Debug" # 生成命令时指定
示例
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") # 启用GDB
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") # 启用优化(1~3)
不同的type对应的编译选项
Type | 编译选项 |
Debug | CMAKE_CXX_FLAGS_DEBUG |
Release | CMAKE_CXX_FLAGS_RELEASE |
RelWithDebInfo | CMAKE_CXX_FLAGS_RELWITHDEBINFO |
MinSizeRel | CMAKE_CXX_FLAGS_MINSIZEREL |
注
- CMAKE_CXX_FLAGS是共用的参数,总的编译参数为CMAKE_CXX_FLAGS + 某一个CMAKE_CXX_FLAGS_XXX
2、除了CMAKE_CXX_FLAGS变量,还可以使用add_compile_options来添加编译选项
#判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持
if(CMAKE_COMPILER_IS_GNUCXX)
add_compile_options(-std=c++11)
message(STATUS "optional:-std=c++11")
endif(CMAKE_COMPILER_IS_GNUCXX)