Как остановить предупреждение GCC о переопределении __GXX_ABI_VERSION? - PullRequest
0 голосов
/ 05 марта 2019

Имея дело с той же проблемой, описанной в этом вопросе (только с разными конкретными версиями), я добавил следующее в мой файл 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

Так что да, я знаю, что я [re] определил __GXX_ABI_VERSION в командной строке, и я думаю, я знал, что это было определено ранее каким-то «встроенным» способом, но я сделал это специально. Есть ли что-то, что я могу добавить в свой файл CMakeLists.txt, чтобы подавить это конкретное предупреждение? Я не хочу подавлять любые другие предупреждения переопределения; только этот конкретный. Я взял перенаправление make stderr в файл и grep, используя его для «error:», чтобы выбрать из ошибок стека предупреждений фактические ошибки компиляции, и это боль ...

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Я не думаю, что ручная смена версии - это хорошая идея. Вы можете получить неожиданное поведение. Правильный способ решения проблемы - действительно использовать ожидаемую версию, чтобы не исправлять имя версии.

Однако, чтобы ответить на ваш вопрос, вы можете попробовать

add_definitions(-U__GXX_ABI_VERSION=0LD) #replace 0LD by the old version
add_definitions(-D__GXX_ABI_VERSION=1002)
0 голосов
/ 06 марта 2019

Благодаря подталкиванию Julien я исследовал влияние опции GCC -fabi-version=....И вот, если указать -fabi-version=2, то __GXX_ABI_VERSION будет определено как 1002.Итак, исправление:

Изменить

add_definitions(-D__GXX_ABI_VERSION=1002)

на

add_definitions(-fabi-version=2)
...