我试图将所有警告标记为错误,以防止新的警告悄悄出现,但我希望使现有的代码库正常工作,因此我在-Wno-error=foo中将其中一些标记为无错误。问题是,有些警告仍然被报告为错误,而不是警告,即使它们被标记为无错误:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -Xclang -include-pch -Xclang Pch/UI-ProjectScreen/c++.pch -pipe -stdlib=libc++ -Wall -Wextra -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wheader-hygiene -Wmissing-declarations -Wunreachable-code -Wuninitialized -Woverloaded-virtual -Werror -Wno-error=deprecated-declarations -Wno-error=logical-op-parentheses -Wno-error=missing-field-initializers -Wno-error=non-virtual-dtor -Wno-error=pedantic -Wno-error=reorder -Wno-error=return-stack-address -Wno-error=sign-compare -Wno-error=switch -Wno-error=unreachable-code -Wno-error=unused-const-variable -Wno-error=unused-parameter -Wno-error=unused-private-field -Wno-error=unused-variable -Wno-error=#warnings -Wno-deprecated-register -Wno-extra-semi -Wno-backslash-newline-escape -Wno-missing-braces -isystem /Developer/Boost/1.57.0-Clang/include -isystem /Developer/Qt5.6.1-clang/5.6/clang_64/include -g -fPIC -std=gnu++1y -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -mmacosx-version-min=10.8 -W -D_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_XMLPATTERNS_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../../../../Modules/UI/ProjectScreen -I. -I/Developer/Boost/1.57.0-Clang/include -I../../../../ThirdParties/Glew/1.13.0/include -I../../../../ThirdParties/TBB/include -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtWidgets.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtGui.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtXml.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtXmlPatterns.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtNetwork.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtCore.framework/Headers -IMoc -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/AGL.framework/Headers -IUi -I/Developer/Qt5.6.1-clang/5.6/clang_64/mkspecs/macx-clang -F/Developer/Qt5.6.1-clang/5.6/clang_64/lib -o Obj/ProjectScreenWidget.o ../../../../Modules/UI/ProjectScreen/ProjectScreenWidget.cpp
../../../../Modules/UI/ProjectScreen/ProjectScreenWidget.cpp:597:9: error: missing field 'duration' initializer [-Werror,-Wmissing-field-initializers]
};
^
1 error generated.
make: *** [Obj/ProjectScreenWidget.o] Error 1
12:09:36: The process "/usr/bin/make" exited with code 2.正如您所看到的,我传递的是-Werror和-Wno-error=missing-field-initializers,那么为什么编译在missing-field-initializers上出错呢?当然,我可以修正这个警告,但我想先了解一下发生了什么。
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ --version
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix我是不是漏掉了什么明显的东西?
编辑:我刚刚在http://gcc.godbolt.org/#上试了一下,它看起来像预期的那样,我不能在那里复制相同的问题.
发布于 2016-07-11 11:11:22
我终于发现了这个问题:我使用qmake生成makefile,它在我的设置之后自动添加-W,这实际上忽略了以前设置的所有警告选项。
因此,我更改了QMAKE_CXXFLAGS_WARN_ON变量以删除-W选项,并对其进行了修复。
QMAKE_CFLAGS_WARN_ON -= -Wall -W
QMAKE_CXXFLAGS_WARN_ON -= -Wall -W我也可以编辑makespec文件,但我认为这个解决方案更干净,更能抵抗用户错误(例如,重新安装Qt等等)。
https://stackoverflow.com/questions/38267384
复制相似问题