【发布时间】:2012-04-22 13:52:07
【问题描述】:
我只想调试一些在 Linux 上运行的代码,我需要一个调试版本 (-O0 -ggdb)。所以我把这些东西加到我的CMakeLists.txt:
set(CMAKE_BUILD_TYPE DEBUG)
set(CMAKE_C_FLAGS "-O0 -ggdb")
set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb")
set(CMAKE_C_FLAGS_RELEASE "-O0 -ggdb")
set(CMAKE_CXX_FLAGS "-O0 -ggdb")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "-O0 -ggdb")
当我尝试编译时,我使用 make VERBOSE=1 打开了详细信息
我观察了输出,像这样
... /usr/bin/c++ -D_BSD_SOURCE **-O0 -ggdb** -Wnon-virtual-dtor
-Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W
-Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS
-fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics
-fvisibility=hidden -fvisibility-inlines-hidden **-g -O2**
-fno-reorder-blocks -fno-schedule-insns -fno-inline ...
显然代码是用"-g -O2" 编译的,这不是我想要的。如何强制它只使用"-O0 -ggdb"?
【问题讨论】:
-
如果你想要一个可调试的构建,只需在命令行中进行调试配置。 “cmake -DCMAKE_BUILD_TYPE=调试”。生成的构建将具有给定构建系统的调试标志。没有理由修改 cmake 文件本身。您还可以使用另一个 -D 参数发送 CMAKE_C_FLAGS 值。