CMake中的编译类型

CMake中的编译类型(R e l e a s e D e b u g Release\;DebugReleaseDebug

@(CMake笔记)

一个编译类型[Build Type]意味着一系列在编译代码时用到的编译期设置。比如是否要进行优化,或者是否要包含调试信息。编译类型或者说编译模式[Build Mode],又或者设置[confiuration]在VS中相当广泛,在VS中C++工程至少有两种编译类型:R e l e a s e 和 D e b u g Release和DebugReleaseDebug
CMake中的编译类型也类似。如果编译C++工程,至少有四种可供选择:R e l a s e RelaseRelaseD e b u g DebugDebugM i n S i z e R e l MinSizeRelMinSizeRelR e l W i t h D e b I n f o RelWithDebInfoRelWithDebInfo

  • 对于特定编程语言的源文件而言,与编译类型相关的编译选项和规则可以在/usr/share/cmake-2.8/Modules/Find*.cmake中查到。C++的在文件夹:/usr/share/cmake-2.8/Modules/Compiler
  • 使用GNU C++编译器,查阅/usr/share/cmake-2.8/Modules/Compiler/GNU.cmake
  • 使用g++ -03 ..设置编译类型为Release
  • 使用g++ -g ..设置编译类型为Debug
  • 可以在CMakeLists.txt直接声明编译类型
set(CMAKE_BUILD_TYPE,Release)
  • 或者在命令行声明

cmake .. -DCMAKE_BUILD_TYPE Release

  • 可以在CMakeLists.txt中指定某个编译类型为默认类型,如果没有指定,就执行默认类型。
if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE Release)
endif(NOT CMAKE_BUILD_TYPE)