微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CMake从哪里追加其他CXXFLAGS?

如何解决CMake从哪里追加其他CXXFLAGS?

我使用Clear Linux发行版(英特尔制造)来构建一些使用CMake的C ++项目。我运行cmake,然后运行make命令。在make构建代码时,会出现关于maybe-uninitialized的警告,并且该警告被视为错误,因为C ++编译器已经使用-Werror选项运行。目前,我无法确定从何处添加-Werror选项。请帮我找到。

我发现Clear Linux中CXXFLAGS环境变量的认值存储在/usr/share/defaults/etc/profile中,如下所示:

CFLAGS="-g -O3 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-
size=32 -Wformat -Wformat-security -m64 -fasynchronous-unwind-tables -Wp,-D_REENTRANT -ftree-loop-distribute-patterns -Wl,-z -Wl,Now
 -Wl,relro -fno-semantic-interposition -ffat-lto-objects -fno-trapping-math -Wl,-sort-common -Wl,--enable-new-dtags -mtune=sk
ylake -Wa,-mbranches-within-32B-boundaries"
FFLAGS="-g -O3 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-
size=32 -m64 -fasynchronous-unwind-tables -Wp,Now -Wl,relro -malign-d
ata=abi -fno-semantic-interposition -ftree-vectorize -ftree-loop-vectorize -Wl,--enable-new-dtags -Wa,-mbranches-within-32B-boundari
es "
FCFLAGS="-g -O3 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer
-size=32 -m64 -fasynchronous-unwind-tables -Wp,relro -malign-
data=abi -fno-semantic-interposition -ftree-vectorize -ftree-loop-vectorize -Wl,--enable-new-dtags "
CXXFLAGS="$CFLAGS -fvisibility-inlines-hidden -Wl,--enable-new-dtags "

如您所见,它还不包含-Werror选项。

可以覆盖CXXFLAGS的另一个位置是/etc/profile,但它不存在。本地用户~/.profile~/.bashrc也不会覆盖CXXFLAGS

那么CMake从哪里追加其他CXXFLAGS? CXXFLAGS是否有一些内置的补充?

我很确定他们不是来自项目本身,因为否则项目开发人员也无法构建其代码。当我尝试根据Linux From Scratch的指令构建glibc时,我也遇到了同样的问题。可能是我使用的Clear Linux发行版中指定的内容吗?但是我怀疑英特尔是否已在其发行版使用的所有C / C ++代码中修复了所有警告。

解决方法

有时候问一个问题是一个自己寻找答案的好方法。

实际上,根项目目录中的CMakeLists.txt将其添加:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -Wall -Wextra -Werror -Wmissing-declarations -std=c++2a -fdiagnostics-color=always")

我只是错过了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。