CMake中的编译类型( R e l e a s e D e b u g Release\;Debug ReleaseDebug)
@(CMake笔记)
一个编译类型[Build Type
]意味着一系列在编译代码时用到的编译期设置。比如是否要进行优化,或者是否要包含调试信息。编译类型或者说编译模式[Build Mode
],又或者设置[confiuration
]在VS中相当广泛,在VS中C++工程至少有两种编译类型:
R
e
l
e
a
s
e
和
D
e
b
u
g
Release和Debug
Release和Debug。
CMake中的编译类型也类似。如果编译C++工程,至少有四种可供选择:
R
e
l
a
s
e
Relase
Relase、
D
e
b
u
g
Debug
Debug、
M
i
n
S
i
z
e
R
e
l
MinSizeRel
MinSizeRel和
R
e
l
W
i
t
h
D
e
b
I
n
f
o
RelWithDebInfo
RelWithDebInfo。
- 对于特定编程语言的源文件而言,与编译类型相关的编译选项和规则可以在
/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)