我想抑制来自外部库的警告,这可以通过marking them as system libraries完成。我发现这是如何在.pro
QtCreator项目文件中执行此操作:
QMAKE_CXXFLAGS += -isystem ../libs/boost159/
问题是QtCreator依赖于INCLUDEPATH
设置,期望这样:
INCLUDEPATH += ../libs/boost159/
如果我删除它,QtCreator将无法再找到boost库:
我原本想将此报告为一个错误,但在一些报告之后我不再相信QtCreator开发人员会考虑修复它。相反,我来这里是为了解决方法。
因为qmake has conditional statements我可以使用这样的东西:
isCompiling {
QMAKE_CXXFLAGS += -isystem ../libs/boost159/
} else {
INCLUDEPATH += ../libs/boost159/
}
因此,QtCreator的解析不会失败,但在编译时,将使用isystem
。有什么想法吗?
明确地:如何在QtCreator解析项目文件时创建只触发/不触发的条件表达式?
答案 0 :(得分:3)
我发现了解决方案。您需要使用qmake
个附加参数并指定您选择的变量,然后测试它是否已定义。由于QtCreator不知道这些参数,因此它不会执行用于编译的块:
# This variable is set as "CONFIG += compiling"
# The assignment is done in qmake command line argument
compiling {
# This block takes effect during real compilation
QMAKE_CXXFLAGS += -isystem ../libs/boost159/ -isystem ../libs/openssl/include
} else {
# This block is seen by QtCreator and other tools that do not have 'CONFIG compiling' defined
INCLUDEPATH += ../libs/boost159/ ../libs/openssl/include
}
然后必须在项目管理中完成设置。不要忘记为发布和调试设置它: