问题:
因此,我的问题是:如何在不完全关闭警告的情况下构建我的 QT 项目(或者必须对一百万个无目的的警告进行分类才能找到我自己的)?我可以禁止仅针对 QT 标头的警告吗?
细节:
问题
几个月前,我在 QT-Creator 中开始了一个 QT 项目。当时我使用的是 gcc 4.6。在确定了一些其他优先事项之后,我发现自己直到现在都没有时间从事该项目。在此期间,我转而使用 clang。当我将 QT 项目配置为使用 clang(该项目在 g++ 中编译时没有警告)时,它在 QT 标头本身中生成了大约 263 个警告。主要是符号转换和无法访问的代码。
尝试
为了解决这个问题,我根据Clang User Manual 中的这个条目添加了 -isystem /path/to/QT/include/dir ,但它似乎没有任何影响。虽然我不确定,但我认为这是因为我的代码#include
是按名称而不是按目录的 QT 标头。虽然解决方案可能是手动列出使用的每个 QT 标头(未尝试过),但这意味着我每次升级 QT 或使用新标头时都必须更新它。当然有更好的解决方案。
这里要求的是正在执行的实际编译命令:
clang++ -c -pipe -Qunused-arguments -Weverything -cxx-isystem /path/to/qt/4.8.3/include/ -g -D_REENTRANT -DQT_NO_KEYWORDS -DQT_SHARED -I/path/to/qt/x86_64/4.8.3/mkspecs/unsupported/linux-clang -I. -I.moc -I.ui -I/path/to/qt/4.8.3/include/ -o .obj/main.o main.cpp
眼镜
我在用:
- Linux 3.2.0-40-generic #64-Ubuntu SMP x86_64 GNU/Linux
- 虽然我团队中的其他人使用 Windows
- QT创作者2.6.2
- QT 4.8.3
- clang 3.2 版(主干 165250)(llvm/主干 165249)
- 目标:x86_64-unknown-linux-gnu