cmake 构建类型:Debug、Release、RelWithDebInfo 和 MinSizeRel

cmake 构建工具中 CMAKE_BUILD_TYPE 变量支持下面四种构建类型:

  • Debug:调试版本,没有优化,开启断言,最全调试信息。
  • Release:正式版本,最高优化,没有调试信息,关闭断言。
  • RelWithDebInfo:既优化又能调试的版本,关闭断言。
  • MinSizeRel:最小体积版本,目的在于优化体积而不是优化速度。

两种设置方法

  • 在命令行中设置:
1
cmake  -DCMAKE_BUILD_TYPE=Debug/Release/...
  • 在 CMakeLists.txt 里设置:
1
SET(CMAKE_BUILD_TYPE "Debug/Release/...”)

注意:选项需要加上双引号才能生效。

不同类型具有各自默认编译选项,也可自定义项目源码中的编译选项,下面是源码 dyninst/cmake/optimization.cmake 文件里对编译选项的描述:

1
2
3
4
5
6
7
8
9
10
11
set(CMAKE_C_FLAGS_DEBUG "-Og -g3")
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g3")

set(CMAKE_C_FLAGS_RELEASE "-O2 ${LTO_FLAGS}")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 ${LTO_FLAGS}")

set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g3 ${LTO_FLAGS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g3 ${LTO_FLAGS}")

set(CMAKE_C_FLAGS_MINSIZEREL "-Os ${LTO_FLAGS}")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os ${LTO_FLAGS}")

从上面配置可以看出,不同构建类型对 -O-g 选项使用的等级不同,也可以自定义修改选项等级。