在发布和调试模式下使用cmake标志

时间:2020-11-03 08:53:51

标签: c++ debugging cmake release

我正在尝试使C ++库适合我自己的用法,并且它的根CMakeLists.txt中包含以下几行

set(BUILD_TYPE_RELEASE TRUE)

set(CMAKE_CXX_FLAGS "-O3 -no-pie -march=native -ggdb -Wall \
-Wextra -Wcast-align -Wdisabled-optimization -Wformat=2 \
-Winit-self -Wmissing-include-dirs -Woverloaded-virtual \
-Wshadow -Wsign-promo -Werror")

set(CMAKE_C_FLAGS "-O3  -ggdb -std=gnu99 -I.")

根据我到目前为止的了解,将其构建类型设置为Release,并将某些优化标志和警告设置为C ++和C编译器。我有以下问题

  1. 调试通常无需任何优化(-O0),因此如果我 通过传递-DCMAKE_BUILD_TYPE=Debug在调试模式下编译代码, CMAKE_CXX_FLAGS的优化标志会自动设置为0 而不是3?
  2. 将gdb和警告设置为C和CXX是否相关? 标志,如果构建类型设置为发布模式?
  3. 我假设这些标志仅在使用命令行进行调试时才有意义,因为在使用VSCode之类的IDE进行调试时,系统会要求我指定调试器,它通常会自动创建配置。这个假设正确吗?

我将来可能必须调试它,所以我想对释放和调试模式如何与这些标志一起使用有一个清晰的了解。我对CMake和调试非常陌生,因此,如果我的问题在某种意义上是错误的,对不起。如果有人将一些资源理解这些标志的用法链接到此线程,我将非常感激,我很难在cmake文档中找到这些标志。

我正在linux上运行代码,我的cmake版本是3.5.1

0 个答案:

没有答案