一般的cmake可以使用CMAKE_BUILD_TYPE来选择Release还是Debug版本。
而对于generator是Visual Studio或者Xcode,cmake则支持Multi configuration。
这使得开发人员可以直接在IDE里面选择使用Debug或者Release。
这边我们使用Visual Studio和Ninja来比较一下区别。
首先编写一个简单的CMakeLists.txt
cmake_minimum_required(VERSION 3.16.0)
project(HelloWorld)
add_executable(HelloWorld main.cpp)
main.cpp也是一个简单的HelloWorld。
#include <iostream>
using namespace std;
int main() {
cout << "HelloWorld" << endl;
return 0;
}
首先尝试使用Visual Studio的Multi-config
也可以打开VS的.sln项目文件。
可以在里面选择不同的配置进行编译和运行。
接着使用ninja,使用Ninja在cmake里面并不支持MultiConfig(新的cmake版本提供Ninja MultiConfig来支持MultiConfig)。所以在cmake启动的时候就需要指定-DCMAKE_BUILD_TYPE=Debug/Release。
这边使用Debug模式。
如果需要重新生成Release模式的,则需要重新配置cmake。
Multi config确实提供了便利,可以在一个IDE里面自由的切换Debug还是Release。
不使用Multi config,其实也不是那么麻烦,可以新建不同的目录来生成Debug和Release模式的环境。在不同目录下面编译,来区分Debug还是Release。