CMake 把编译系统分为“single-configuration”和“multi-config”两种,其区别在于构建类型(build type)是在 CMake 生成时决定的,还是在实际构建项目时决定的。
“single-configuration”包括各种 Makefile 和 NMake 生成器,需要在 CMake 生成命令中定义 CMAKE_BUILD_TYPE
选择构建类型,比如:
1 | $ mkdir build && cd build |
此时在构建时的 --config
参数是不起作用的。
“multi-config”则主要是生成 IDE 项目文件的生成器,比如 Visual Studio 和 Xcode,与“single-configuration”相反,CMake 生成命令中的 -DCMAKE_BUILD_TYPE
定义会被忽略,构建命令中的 --config
参数才决定构建类型:
1 | $ mkdir build && cd build |
这种设计实在有些不正交……