Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cmake的默认构建配置是什么_C++_Cmake - Fatal编程技术网

C++ cmake的默认构建配置是什么

C++ cmake的默认构建配置是什么,c++,cmake,C++,Cmake,作为回答,它说调试是默认的cmake构建配置 target_link_libraries(MyApp debug Widgets_d) target_link_libraries(MyApp optimized Widgets) 但我有一个不同的观察: 在我的CMakeLists.txt中,我有以下内容可以根据当前的构建配置选择lib的调试和发布版本 target_link_libraries(MyApp debug Widgets_d) target_link_libraries(MyApp

作为回答,它说调试是默认的cmake构建配置

target_link_libraries(MyApp debug Widgets_d)
target_link_libraries(MyApp optimized Widgets)
但我有一个不同的观察:

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

target_link_libraries(MyApp debug Widgets_d)
target_link_libraries(MyApp optimized Widgets)
似乎当我调用cmake而不指定-DCMAKE\u BUILD\u TYPE标志时,会使用Widgets而不是Widgets\u d(当我删除Widgets并尝试构建时,会抱怨lib不存在)。因此,这意味着默认情况下,构建配置是优化的,而不是调试的

那么,默认的构建配置是什么呢?如果是debug,那么我的CMakelists.txt有什么问题?

with
optimized
关键字对应于所有未调试的配置


尝试将
消息(状态“Build type:${CMAKE_Build_type})添加到CMakeLists.txt以查看实际的生成类型(我认为它应该是空的)。

这取决于您使用的是单个配置生成器(Makefiles)还是多配置生成器(Visual Studio,XCode)

问题中引用的是一个多配置生成器。使用多配置生成器时,将忽略配置变量
CMAKE\u BUILD\u TYPE
。要选择要生成的配置,cmake允许开关
--config
,默认为
Debug
。所以

cmake --build .
在多配置项目中,生成一个
Debug
版本

但是,当使用单个配置生成器时,将忽略开关
--config
。只有配置变量
CMAKE\u BUILD\u TYPE
用于确定构建类型,默认为
Release


有关单配置和多配置生成器的更多背景信息,请参见。

因此,如果我在生成时未指定CMAKE_BUILD_类型,则生成将是一个优化的生成,并且不会将调试信息添加到二进制文件中?调试信息和您自己代码的优化将取决于为默认生成类型设置的编译器标志。至于Widgets库,是的,MyApp将与Widgets(而不是Widgets)链接。如果使用CMake生成makefile(CMake也支持其他输出格式),则可以使用“make VERBOSE=1”查看确切的编译器标志。