Jul*_*n-L 11 qt warnings qmake g++ qt5
我编译了基于Qt5的项目,并在g ++上启用了警告:
# project.pro file
QMAKE_CXXFLAGS += -std=c++11 -Wall -Wextra -Wconversion -Weffc++
Run Code Online (Sandbox Code Playgroud)
在编译时,Qt会产生大量警告(1000+只有一个简单的小部件),隐藏了我的代码中的警告.
如何-isystem
在指定Qt的标题时告诉qmake使用开关而不是-I
抑制警告?我不想关闭警告我想保留它们用于我的代码.
注意:我检查了这个问题,但它在我的情况下不起作用,它可能只适用于Qt4,我使用Qt5.
注2:这是一个公认的错误,我正在寻找一种解决方法.我使用来源5.4.1编译QMAKE的最新版本,该版本从通过系统头文件/include
和/usr/include
作为系统头但不是Qt的头.
注3:我知道CMake可以工作,但这对我来说不是一个选择.
Jul*_*n-L 13
我找到了两种方法来抑制来自Qt标头的警告,一种方法是在系统的路径中安装Qt(如另一个答案所示),另一种方法pro
是使用GCC标志直接在文件中安装.
构建自己的Qt时,将标头的安装路径配置为您的系统路径之一:
$ ./configure -headerdir /usr/local/include
Run Code Online (Sandbox Code Playgroud)
系统路径是/usr/include
或/usr/local/include
列出的其中一个:
$ grep DEFAULT_INCDIRS mkspecs/qconfig.pri
QMAKE_DEFAULT_INCDIRS = /usr/include/c++/4.8 /usr/include/x86_64-linux-gnu/c++/4.8 /usr/include/c++/4.8/backward /usr/lib/gcc/x86_64-linux-gnu/4.8/include /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed /usr/include/x86_64-linux-gnu /usr/include
Run Code Online (Sandbox Code Playgroud)
来源:Qt开发列表中的这个主题.
或直接在您的Qt pro
文件中,只需将-isystem
标志添加到QMAKE_CXXFLAGS
:
# the line below suppresses warnings generated by Qt's header files: we tell
# GCC to treat Qt's headers as "system headers" with the -isystem flag
QMAKE_CXXFLAGS += -isystem $$[QT_INSTALL_HEADERS]
Run Code Online (Sandbox Code Playgroud)
生成的GCC命令行如下所示:
g++ -c -pipe -isystem /usr/local/Qt-5.4.1/include -Wall ...
-I/usr/local/Qt-5.4.1/include
-I/usr/local/Qt-5.4.1/include/QtWidgets
...
Run Code Online (Sandbox Code Playgroud)
注意Qt的包含路径是如何添加的-I
,允许Qt Creator"看到"所有Qt头,但GCC看到该-isystem
标志并禁止所有子文件夹的警告.
归档时间: |
|
查看次数: |
4642 次 |
最近记录: |