什么是cmake的默认构建配置

时间:2014-11-23 06:08:46

标签: c++ cmake

this回答中,它说Debug是默认的cmake构建配置。

但我有不同的看法:

我在我的CMakeLists.txt中有以下内容,根据当前的构建配置选择lib的调试和发布版本。

target_link_libraries(MyApp debug Widgets_d)
target_link_libraries(MyApp optimized Widgets)

似乎当我在没有sepcifying -DCMAKE_BUILD_TYPE标志的情况下调用cmake时,使用Widgets而不是Widgets_d(当我删除Widgets并尝试构建时,抱怨lib不在那里)。所以这意味着默认情况下构建配置是优化的,而不是调试。

那么实际上默认的构建配置是什么?如果是调试,我的CMakelists.txt会出现什么问题?

2 个答案:

答案 0 :(得分:5)

带有optimized关键字的

target_link_libraries对应于所有未调试的配置。

尝试将message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")添加到您的CMakeLists.txt以查看实际的构建类型(我认为它应该为空)。

答案 1 :(得分:0)

是否取决于是否使用单配置生成器(Makefiles)还是多配置生成器(Visual Studio,XCode)。

问题中引用的link与多配置生成器有关。使用多配置生成器时,将忽略配置变量CMAKE_BUILD_TYPE。要选择要构建的配置,cmake允许使用开关--config,默认开关为Debug。所以

cmake --build .

在多配置项目中构建Debug版本。

但是,在使用单配置生成器时,将忽略开关--config。仅配置变量CMAKE_BUILD_TYPE用于确定构建类型,默认为Release

this answer中有关单配置生成器和多配置生成器的更多背景信息。