我想为除一个以外的所有文件指定“将警告视为错误”标志。例如,如果我有a.cpp,b.cpp和c.cpp,这将适用于所有3:
SOURCES += a.cpp \
b.cpp \
c.cpp
QMAKE_CXXFLAGS += /WX
但是我该怎么做才能只有a.cpp和b.cpp有那个标志但是c.cpp没有?例如,我试过这个(但它不起作用):
SOURCES += a.cpp \
b.cpp \
c.cpp
QMAKE_CXXFLAGS += /WX
c.cpp: QMAKE_CXXFLAGS -= /WX
修改:我看到有How to specify separate compilation options for different targets in qmake?和http://permalink.gmane.org/gmane.comp.lib.qt.general/10945。但是我需要取消指定某个文件的标志(相反),所以我不确定这是否适用于我。所提供的解决方案也适用于GCC(我不是MSVC)。
修改2 :是否可以在源文件本身内使用/WX
取消设置#pragma
?
答案 0 :(得分:1)
从头脑中,我想到了两种处理你情况的方法:
将源文件列表拆分为多个(不相交)列表。对于源文件的每个子列表,编译一个包含所需编译器标志的临时静态库。然后将最终的应用程序/库链接到所有临时静态库。相当麻烦!
使用#pragma
语句指示编译器忽略某些警告。这取决于您的编译器。对于海湾合作委员会,请参阅
答案 1 :(得分:0)
似乎没有一个好的解决方案。这是我最后做的:
我将QMAKE_CXXFLAGS += /WX
放在.pro文件中,然后将#pragma warning(push, 0)
放在我想要排除的每个.cpp文件的开头。
这不会禁用“将警告视为错误”标志,它只会禁用警告,但由于我们通常希望排除第三方代码,因此这是一个很好的解决方案。