Как добавить правило «Предупреждения как ошибка» в файл Qt .pro? - PullRequest
11 голосов
/ 10 июня 2010

Когда я обычно работаю над проектом C++, первое, что я делаю, это устанавливаю «обрабатывать предупреждение как ошибки» в моем компиляторе.генерирует Makefile для вас и не включает эту опцию в команды компиляции.Я почти уверен, что есть способ добавить такую ​​опцию (и другие) в сгенерированный Makefile, но я не мог понять это.

Как мне это сделать?* Я использую версию Qt с открытым исходным кодом с g++ в качестве компилятора.

Ответы [ 3 ]

13 голосов
/ 10 июня 2010

Вы можете использовать QMAKE_CXXFLAGS в файле pro для указания флагов компилятора:

QMAKE_CXXFLAGS += -Werror
6 голосов
/ 15 марта 2016

Решение выше, только для GCC. Для компиляторов стенда (VS и gcc) используйте:

win32-g++ {
   QMAKE_CXXFLAGS += -Werror
}
win32-msvc*{
   QMAKE_CXXFLAGS += /WX
}
0 голосов
/ 21 июля 2017

Существует переменная QMake с именем QMAKE_CXXFLAGS_WARN_ON, которая включается в CXXFLAGS всякий раз, когда CONFIG содержит warn_on.

Так что все файлы моего проекта включают common.pri, который содержит:

CONFIG += warn_on

dirty_build: CONFIG += noopt

!dirty_build: WARNINGS += -Werror

# Turn on warnings, except for code that is Qt-generated
WARNINGS += -Wextra
WARNINGS += -Wunknown-pragmas -Wundef
WARNINGS += -Wold-style-cast
WARNINGS += -Wdisabled-optimization -Wstrict-overflow=4
WARNINGS += -Weffc++ -Wuseless-cast
WARNINGS += -Winit-self -Wpointer-arith
WARNINGS += -Wlogical-op
WARNINGS += -Wunsafe-loop-optimizations -Wno-error=unsafe-loop-optimizations
QMAKE_CXXFLAGS_WARN_ON += $(and $(filter-out moc_% qrc_%, $@),$${WARNINGS})

filter-out существует для отключения предупреждений для сгенерированных Qt мета-объектов и файлов ресурсов.

У меня также есть

# Override the C and C++ targets to selectively replace -I with -isystem for include paths
QMAKE_RUN_CC            = $(CC) -o $obj -c $(CFLAGS) $(subst -I/usr/include,-isystem /usr/include,$(INCPATH)) $src
QMAKE_RUN_CC_IMP        = $(CC) -o $@ -c $(CFLAGS) $(subst -I/usr/include,-isystem /usr/include,$(INCPATH)) $<
QMAKE_RUN_CXX           = $(CXX) -o $obj -c $(CXXFLAGS) $(subst -I/usr/include,-isystem /usr/include,$(INCPATH)) $src
QMAKE_RUN_CXX_IMP       = $(CXX) -o $@ -c $(CXXFLAGS) $(subst -I/usr/include,-isystem /usr/include,$(INCPATH)) $<

Это позволяет мне включать -Weffc++ и другие, не вызывая большого количества сообщений из установленных заголовочных файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...