首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CMake设置CFLAGS和CXXFLAGS选项

使用CMake设置CFLAGS和CXXFLAGS选项
EN

Stack Overflow用户
提问于 2012-04-10 17:10:49
回答 2查看 211.7K关注 0票数 95

我只想调试一些在Linux上运行的代码,我需要一个调试版本(-O0 -ggdb)。因此,我将这些内容添加到我的CMakeLists.txt

代码语言:javascript
复制
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打开了verbose,并观察到了输出,如下所示

代码语言:javascript
复制
... /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"

EN

回答 2

Stack Overflow用户

发布于 2017-01-25 12:48:23

对我来说,最简单的解决方案就是:

代码语言:javascript
复制
export CFLAGS=-ggdb
export CXXFLAGS=-ggdb

CMake会将它们附加到所有配置的标志上。只需确保清除CMake缓存即可。

票数 22
EN

Stack Overflow用户

发布于 2015-08-27 21:16:18

您必须更改cmake C/CXX默认标志。

根据CMAKE_BUILD_TYPE={DEBUG/MINSIZEREL/RELWITHDEBINFO/RELEASE} put in main CMakeLists.txt中的一个:

对于C

代码语言:javascript
复制
set(CMAKE_C_FLAGS_DEBUG "put your flags")
set(CMAKE_C_FLAGS_MINSIZEREL "put your flags")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "put your flags")
set(CMAKE_C_FLAGS_RELEASE "put your flags")

对于C++

代码语言:javascript
复制
set(CMAKE_CXX_FLAGS_DEBUG "put your flags")
set(CMAKE_CXX_FLAGS_MINSIZEREL "put your flags")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "put your flags")
set(CMAKE_CXX_FLAGS_RELEASE "put your flags")

这将覆盖CMakeCache.txt中定义的值

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10085945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档