在处理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
的stderr
重定向到一个文件,然后将其用于“错误:”以便从大海捞针中挑选出实际的编译错误,这是一种痛苦......
我不认为手动更改版本是个好主意。您可能会遇到意外行为。解决问题的正确方法是真正使用预期版本而不是修补版本名称。
但是,要回答您的问题,您可以尝试
grep
感谢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)