2020-07-23 | 研究与探索 | UNLOCK

CMake 的 Build Type 与 Configuration Type

CMake 把编译系统分为“single-configuration”和“multi-config”两种,其区别在于构建类型(build type)是在 CMake 生成时决定的,还是在实际构建项目时决定的。

“single-configuration”包括各种 Makefile 和 NMake 生成器,需要在 CMake 生成命令中定义 CMAKE_BUILD_TYPE 选择构建类型,比如:

1
2
3
$ mkdir build && cd build
$ cmake .. -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release
$ cmake --build .

此时在构建时的 --config 参数是不起作用的。

“multi-config”则主要是生成 IDE 项目文件的生成器,比如 Visual Studio 和 Xcode,与“single-configuration”相反,CMake 生成命令中的 -DCMAKE_BUILD_TYPE 定义会被忽略,构建命令中的 --config 参数才决定构建类型:

1
2
3
$ mkdir build && cd build
$ cmake .. -G "Visual Studio 14 2015"
$ cmake --build . --config Release

这种设计实在有些不正交……