cmake的默认构建配置是什么

6mzjoqzu  于 2023-05-29  发布在  其他
关注(0)|答案(2)|浏览(222)

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文件会有什么问题?

ulydmbyx

ulydmbyx1#

这取决于你使用的是单配置生成器(Makefile)还是多配置生成器(Visual Studio,XCode)。
问题中引用的link是关于多配置生成器的。使用多配置生成器时,配置变量CMAKE_BUILD_TYPE将被忽略。要选择要构建的配置,cmake允许使用开关--config。在许多情况下,省略--config会构建Debug配置,但当前的CMake文档现在澄清了没有指定的默认值-它甚至可以是空的。
但是,当使用单一配置生成器时,开关--config将被忽略。只有配置变量CMAKE_BUILD_TYPE用于确定构建类型。默认值取决于工具链(参见docs)。
关于this answer中的单配置和多配置生成器的更多背景信息。

3vpjnl9f

3vpjnl9f2#

带有optimized关键字的target_link_libraries对应于所有配置,这些配置未调试。
尝试将message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")添加到您的CMakeLists.txt中,以查看实际的构建类型(我认为它应该是空的)。

相关问题