如何停止重新定义__GXX_ABI_VERSION的GCC警告?

问题描述 投票:0回答:2

在处理this question中描述的相同问题时(仅使用不同的特定版本),我将以下内容添加到我的顶级CMakeLists.txt文件中:

add_definitions(-D__GXX_ABI_VERSION=1002)

...因为1002是我构建的wxWidgets想要的版本。好,太棒了;现在编译的程序将运行。但是现在当我执行make时,每个编译的文件都会发出以下警告:

<command-line>: warning: "__GXX_ABI_VERSION" redefined
<built-in>: note: this is the location of the previous definition

所以,是的,我知道我在命令行上定义了__GXX_ABI_VERSION,我想我知道它之前是以某种“内置”方式定义的,但我是故意这样做的。我可以添加到我的CMakeLists.txt文件中以获取特定警告吗?我不想压制任何其他重新定义警告;只是那一个特定的。我已经将makestderr重定向到一个文件,然后将其用于“错误:”以便从大海捞针中挑选出实际的编译错误,这是一种痛苦......

gcc cmake g++
2个回答
1
投票

我不认为手动更改版本是个好主意。您可能会遇到意外行为。解决问题的正确方法是真正使用预期版本而不是修补版本名称。

但是,要回答您的问题,您可以尝试

grep

0
投票

感谢add_definitions(-U__GXX_ABI_VERSION=0LD) #replace 0LD by the old version add_definitions(-D__GXX_ABI_VERSION=1002) 的推动,我调查了GCC选项Julien的影响。瞧,指定-fabi-version=...导致-fabi-version=2被定义为__GXX_ABI_VERSION。所以,修复:

更改

1002

add_definitions(-D__GXX_ABI_VERSION=1002)
© www.soinside.com 2019 - 2024. All rights reserved.