Начал вводить ответ на этот вопрос в комментариях, но он был слишком длинным ... Так что я просто сделаю ответ.
То, что у вас есть, это явно 2 предупреждения, но вы терпите неудачу с 2 ошибки. Это то, что делает -Werror
. Теперь то, что вы сделали с -Wno-error
, должно работать, но оно может быть перезаписано, если за ним следует -Werror
. Например, если я создаю простую программу с g cc, например, так:
gcc -Wno-error -Werror test.c
Команда -Werror
перезаписала команду -Wno-error
. Я только что посмотрел на файл CMakeLists.txt из этого проекта и не вижу упоминания -Werror
. Так как это по умолчанию выключено, оно должно быть где-то там. Вот фрагмент из файла CMakeLists.txt из этого проекта:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic -Wall -Wextra")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
Я думаю, что -Werror
может быть установлено для ${OpenMP_C_FLAGS}
или ${OpenMP_CXX_Flags}
. Чтобы проверить это, вы можете использовать функцию cmake message
. Добавьте следующие строки после назначения CMAKE_CXX_FLAGS
:
message("CFlags: ${CMAKE_C_FLAGS} CXXFlags: ${CMAKE_CXX_FLAGS}")
Моя теория состоит в том, что вы найдете где-нибудь -Werror
. Если это так, просто добавьте -Wno-error
в конце этих двух строк (8 и 10) в CMakeLists.txt:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS} -Wno-error")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -Wno-error")
Трейлинг -Wno-error
перезапишет любое значение -Werror
, Может быть более чистое решение cmake для решения этой проблемы, но я не эксперт по cmake.