Эта проблема была поднята ( здесь и здесь ), и в зависимости от вашей версии 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}")