Проект CMake в Visual Studio выдает предупреждения о переопределении флага (предупреждение командной строки D9025: переопределение '/ W4' с помощью '/ w') - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть проект CMake, который я создаю с помощью Microsoft Visual Studio 2019. Я пытаюсь исправить и удалить все предупреждения, но есть один тип, который я не могу отключить или исправить.

Всеиз них относятся к типу:

Command line warning D9025: overriding '/W4' with '/w'
Command line warning D9025: overriding '/W3' with '/W4'

Я пытался их исправить, но не могу выяснить, что является причиной всех их.

Мой вопрос:

Как отключить предупреждения с помощью CMake? Или есть верный способ найти их причину и устранить их?

1 Ответ

1 голос
/ 05 ноября 2019

Эта проблема была поднята ( здесь и здесь ), и в зависимости от вашей версии CMake существует несколько решений.

При сборке для MSVC с CMake по умолчанию добавляются флаги предупреждения компилятора (например, /W3). В CMake 3.15 CMake ввел fix для этого, и флаги предупреждений компилятора больше не добавляются автоматически, поэтому предупреждение больше не должно появляться. Из документов:

CMake 3.15 и выше предпочитают не указывать флаги предупреждения со значением CMAKE_<LANG>_FLAGS по умолчанию.

Наряду с этим исправлением CMake представил политику CMP0092 , что позволяет при необходимости переключиться обратно на поведение OLD (добавив флажки предупреждений по умолчанию).


Если вы привязаны к версии CMake старше 3.15, вы можете вручную манипулировать с переменной CMAKE_<LANG>_FLAGS, чтобы самостоятельно заменить предупреждения, используя регулярные выражения CMake . Вы можете попробовать что-то вроде этого:

string(REGEX REPLACE "/W[3|4]" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...