在处理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:”,以便从警告的干草堆中挑选出实际的编译错误,这就是痛苦...
答案 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)