如何抑制header中包含的文件的警告

问题描述 投票:0回答:2
-Weffc++

选项。为了压制QT标题的警告,我添加

QMAKE_CXXFLAGS += -isystem $(QTDIR)\include
。 但这并没有抑制所有警告,我仍然会收到
Quuid
课程的烦人警告,因为
$(QTDIR)\include\QtCore\quuid.h 文件包括
..\..\src\corelib\plugin\quuid.h
.
我试图添加
QMAKE_CXXFLAGS += -isystem $(QTDIR)\src

QMAKE_CXXFLAGS += -isystem $(QTDIR)\src\corelib\plugin

但这无济于事。有办法解决此问题吗?
	
您需要分别抑制每个目录。我项目的示例:

QMAKE_CXXFLAGS += -isystem "$$[QT_INSTALL_HEADERS]/qt5" -isystem "$$[QT_INSTALL_HEADERS]/qt5/QtWidgets" \ -isystem "$$[QT_INSTALL_HEADERS]/QtXml" -isystem "/usr/include/qt5/QtGui" \ -isystem "$$[QT_INSTALL_HEADERS]/QtCore"
qt gcc qmake suppress-warnings
2个回答
10
投票
或者,为您启用的确切QT模块自动化以上内容:

for (inc, QT) { QMAKE_CXXFLAGS += -isystem \"$$[QT_INSTALL_HEADERS]/Qt$$system("echo $$inc | sed 's/.*/\u&/'")\" } # Still need this separately: QMAKE_CXXFLAGS += -isystem "$$[QT_INSTALL_HEADERS]/qt5"
    

该线程非常有帮助,谢谢@dismine。但是,它并没有为我解决所有问题,所以我在这里分享我的解决方案。
I增强了它,以消除使用标准QMAKE函数的跨平台使用的命令:
sed

2
投票
$$split()

$$join()

$$upper()
需要本地变量,没有它就无法工作。
tollowing与
$$take_first()
一起工作(我已经删除了此示例的QT5版本,因为它的生命结束了):
moduleList
它基于当前使用的QT模块动态生成正确的
Qt >=6

# Mark all Qt headers as system headers !win32-clang-msvc:!mingw:!unix: \ return() win32-clang-msvc: \ optionToken = -imsvc else: \ optionToken = -isystem # The includes are in C:/msys64/ucrt64/include/qt6/ on MSYS2 with Qt6, so they need to be # tagged as -isystem. # This is required on Unix and also Clang-cl with MSVC to avoid warnings from system headers. QMAKE_CXXFLAGS += $$optionToken $$shell_quote($$[QT_INSTALL_HEADERS]/) for(module, QT) { equals(module, "testlib"): \ QMAKE_CXXFLAGS += $$optionToken $$shell_quote($$[QT_INSTALL_HEADERS]/QtTest/) else { # Capitalize a first letter, result: -isystem <path>/include/QtCore/ moduleList = $$split(module, ) QMAKE_CXXFLAGS += \ $$optionToken $$shell_quote($$[QT_INSTALL_HEADERS]/Qt$$upper(\ $$take_first(moduleList))$$join(moduleList, )/) } } unset(optionToken) unset(moduleList)

编译器标志,以便您可以在不同的项目/sub-project中包含此代码。
我可以建议创建

-isystem

并使用qmake config选项

-imsvc
.

原始
Tiny_system_headers.prf

源代码来自

tinyorm
项目。
	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.