在CMake中,set(CMAKE_BUILD_TYPE debug)
和 set(CMAKE_CXX_FLAGS -g)
都与调试有关,但它们的目的和使用方式略有不同。
-
set(CMAKE_BUILD_TYPE debug)
- 这会设置整个项目的构建类型为调试模式。
- 在多配置生成器(如Visual Studio)中,此设置可能不会产生预期的效果,因为这些生成器允许用户在IDE中选择构建类型。
- 设置
CMAKE_BUILD_TYPE
为debug
意味着,除了其它特定于debug
的设置外,CMake还会使用CMAKE_CXX_FLAGS_DEBUG
中的标志。 - 默认情况下,
CMAKE_CXX_FLAGS_DEBUG
通常包含-g
,但也可能包含其他标志。
-
set(CMAKE_CXX_FLAGS -g)
- 这直接设置了C++编译器的标志,为其添加了
-g
选项,这意味着在生成的二进制文件中包含调试信息。 - 这只是一个标志,不像
CMAKE_BUILD_TYPE
那样涉及到整个构建类型的设置。 - 使用这种方式设置标志对多配置生成器和单配置生成器都适用,但如果不小心,可能会覆盖其他重要的标志。
- 这直接设置了C++编译器的标志,为其添加了
总结:
set(CMAKE_BUILD_TYPE debug)
不仅设置了调试标志,还可能影响其他与构建类型相关