13

私が通常C++プロジェクトで作業するとき、私が最初に行うことの1つは、コンパイラーで「警告をエラーとして扱う」を設定することです。

を使用するQtと、がqmake生成さMakefileれ、コンパイルコマンドにこのオプションは含まれません。生成されたオプション(およびその他)を追加する方法があると確信していますが、Makefile理解できませんでした。

どうすればいいですか?

コンパイラとしてQtwithのオープンソースバージョンを使用しています。g++

4

3 に答える 3

14

プロファイルファイルで使用QMAKE_CXXFLAGSして、コンパイラフラグを指定できます。

QMAKE_CXXFLAGS += -Werror
于 2010-06-10T13:55:05.923 に答える
9

上記の解決策はGCC専用です。両方のコンパイラー(VSおよびgcc)の使用:

win32-g++ {
   QMAKE_CXXFLAGS += -Werror
}
win32-msvc*{
   QMAKE_CXXFLAGS += /WX
}
于 2016-03-15T08:34:59.110 に答える
1

QMAKE_CXXFLAGS_WARN_ONが含まれるときはCXXFLAGSいつでもCONFIG含まれるQMake変数が呼び出されます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-outQtで生成されたメタオブジェクトおよびリソースファイルの警告を無効にするために存在します。

私も持っています

# 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++これにより、インストールされたヘッダーファイルから多くのメッセージを発生させることなく、その他を有効にすることができます。

于 2017-07-21T15:14:27.987 に答える