CMAKE_CONFIGURATION_TYPES
和CMAKE_BUILD_TYPE
之间有什么区别?
该文件声称它们被multi-config
或single-config
所区分,这是什么意思?
CMake是构建系统的生成器(是的,它自己不构建任何东西(。
一些生成器是单一配置(例如,Unix Makefiles或Ninja(。这意味着您指定了一个构建类型(通过-DCMAKE_BUILD_TYPE=XXX
(,而cmake --build .
将从生成的构建目录中仅构建该类型(例如Debug
、Release
…(。
其他是multi-config生成器(例如,Visual Studio NN YYYY或Ninja multi-config(——即,您提供一组配置(通过-DCMAKE_CONFIGURATION_TYPES=Debug;Release
(,生成的构建系统可以从单个构建目录中构建任何(或全部(列表(通过cmake --build . --config <name>
(。
因此,通常情况下,单个配置生成器(并非所有(会检查CMAKE_BUILD_TYPE
变量中所需的配置类型。而多配置生成器在CMAKE_CONFIGURATION_TYPES
中查找所需配置的列表。
除了这(两个(变量之外,生成器可以检查一些其他变量;调谐";smth。有关详细信息,最好阅读特定生成器的文档。