在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会出现什么问题?
答案 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中有关单配置生成器和多配置生成器的更多背景信息。