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和DebugRelease和Debug。
CMake中的编译类型也类似。如果编译C++工程,至少有四种可供选择:R e l a s e RelaseRelase、D e b u g DebugDebug、M i n S i z e R e l MinSizeRelMinSizeRel和R 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)