我参与了一个用 Qt 编写并在 Linux 上使用 qmake 和 gcc 构建的软件项目。我们必须链接到一个质量相当低并且会发出大量警告的第三方库。我想在我们的源代码上使用 -W -Wall,但是将 -w 传递给讨厌的第三方库以保持控制台没有噪音和混乱,这样我们就可以专注于我们的代码质量。
在 qmake 中,有没有办法有条件地将 CFLAGS/CXXFLAGS 添加到某些文件和库中?
我参与了一个用 Qt 编写并在 Linux 上使用 qmake 和 gcc 构建的软件项目。我们必须链接到一个质量相当低并且会发出大量警告的第三方库。我想在我们的源代码上使用 -W -Wall,但是将 -w 传递给讨厌的第三方库以保持控制台没有噪音和混乱,这样我们就可以专注于我们的代码质量。
在 qmake 中,有没有办法有条件地将 CFLAGS/CXXFLAGS 添加到某些文件和库中?
乔纳森,我认为问题在于您的源文件包含来自 3rd 方库的头文件,并且您想关闭后者的警告。
凯文,我认为你可以使用编译指示来控制警告:gcc 诊断编译指示
您可以在任何#includes 之前和之后为 3rd 方库添加这些。
如果您使用 -isystem 包含您的库怎么办。
在项目文件中,例如:
QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0
通常,您会在与您自己的代码不同的目录中构建第三方库,因此您将拥有不同的 makefile,因此您可以为该编译放置一组不同的标志。
如果您将第三方库代码与您自己的代码混合在一起,那么您已经为维护噩梦做好了准备。
凯文,
qmake CONFIG+=debug QMAKE_CXXFLAGS_WARN_ON=-w QMAKE_CFLAGS_WARN_ON=-w
应该这样做(如果您愿意,请使用 CONFIG+=release...)
正如马丁所写的那样,通过
QMAKE_CXXFLAGS += -isystem ...
仅在相应的标题中禁止警告。无需禁用项目(甚至项目范围内)的任何源文件的警告,也无需混淆 #pragmas 或包装文件。
请注意,如果您使用的是 QtCreator,您仍然需要(即另外)添加目录,INCLUDEPATH
以便索引器获取标题。