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

时间:2019-03-05 17:27:21

标签: gcc cmake g++

在处理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文件中来抑制该特定警告吗?我不想抑制其他任何重定义警告;只是那个特定的。我已经将make的{​​{1}}重定向到一个文件,并stderr将该文件命名为“ error:”,以便从警告的干草堆中挑选出实际的编译错误,这就是痛苦...

2 个答案:

答案 0 :(得分:1)

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

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

add_definitions(-U__GXX_ABI_VERSION=0LD) #replace 0LD by the old version
add_definitions(-D__GXX_ABI_VERSION=1002)

答案 1 :(得分:0)

由于Julien的推动,我研究了GCC选项-fabi-version=...的影响。瞧,指定-fabi-version=2会导致__GXX_ABI_VERSION被定义为1002。因此,解决方法:

更改

add_definitions(-D__GXX_ABI_VERSION=1002)

add_definitions(-fabi-version=2)