在this answer中,它说Debug是默认的cmake构建配置。
但我有一个不同的观察:
在我的CMakeLists.txt中,我可以根据当前的构建配置选择库的调试和发布版本。
target_link_libraries(MyApp debug Widgets_d)
target_link_libraries(MyApp optimized Widgets)
似乎当我调用cmake而不指定-DCMAKE_BUILD_TYPE标志时,Widgets被使用而不是Widgets_d(当我删除Widgets并尝试构建时,make抱怨lib不存在)。这意味着默认情况下构建配置是优化的,而不是调试的。
那么,默认的构建配置到底是什么呢?如果是debug,我的CMakelists.txt文件会有什么问题?
2条答案
按热度按时间ulydmbyx1#
这取决于你使用的是单配置生成器(Makefile)还是多配置生成器(Visual Studio,XCode)。
问题中引用的link是关于多配置生成器的。使用多配置生成器时,配置变量
CMAKE_BUILD_TYPE
将被忽略。要选择要构建的配置,cmake允许使用开关--config
。在许多情况下,省略--config
会构建Debug
配置,但当前的CMake文档现在澄清了没有指定的默认值-它甚至可以是空的。但是,当使用单一配置生成器时,开关
--config
将被忽略。只有配置变量CMAKE_BUILD_TYPE
用于确定构建类型。默认值取决于工具链(参见docs)。关于this answer中的单配置和多配置生成器的更多背景信息。
3vpjnl9f2#
带有
optimized
关键字的target_link_libraries对应于所有配置,这些配置未调试。尝试将
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
添加到您的CMakeLists.txt中,以查看实际的构建类型(我认为它应该是空的)。