set(CMAKE_BUILD_TYPE debug 和 set(CMAKE_CXX_FLAGS -g的用途是一样的吗

在CMake中,set(CMAKE_BUILD_TYPE debug)set(CMAKE_CXX_FLAGS -g) 都与调试有关,但它们的目的和使用方式略有不同。

  1. set(CMAKE_BUILD_TYPE debug)

    • 这会设置整个项目的构建类型为调试模式。
    • 在多配置生成器(如Visual Studio)中,此设置可能不会产生预期的效果,因为这些生成器允许用户在IDE中选择构建类型。
    • 设置CMAKE_BUILD_TYPEdebug意味着,除了其它特定于debug的设置外,CMake还会使用CMAKE_CXX_FLAGS_DEBUG中的标志。
    • 默认情况下,CMAKE_CXX_FLAGS_DEBUG 通常包含-g,但也可能包含其他标志。
  2. set(CMAKE_CXX_FLAGS -g)

    • 这直接设置了C++编译器的标志,为其添加了-g选项,这意味着在生成的二进制文件中包含调试信息。
    • 这只是一个标志,不像CMAKE_BUILD_TYPE那样涉及到整个构建类型的设置。
    • 使用这种方式设置标志对多配置生成器和单配置生成器都适用,但如果不小心,可能会覆盖其他重要的标志。

总结:

  • set(CMAKE_BUILD_TYPE debug)不仅设置了调试标志,还可能影响其他与构建类型相关

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/132882024
今日推荐