2016-01-21 15 views
1

我想要禁止来自外部库的警告,这可以通过marking them as system libraries来完成。我想通了,这是怎么做到这一点的.pro QtCreator项目文件:当我使用-isystem标志而不是INCLUDEPATH时,QtCreator的代码检查器会中断

QMAKE_CXXFLAGS += -isystem ../libs/boost159/ 

的问题是,QtCreator依赖于INCLUDEPATH设置,预计这样的:

INCLUDEPATH += ../libs/boost159/ 

如果我删除它,在QtCreator不再可以找到Boost库:

image description

我本来想报这个bug BU经过一些报道,我不再相信QtCreator开发人员会考虑解决这个问题。相反,我来这里寻求解决办法。

因为qmake has conditional statements我可以利用的是这样的:

isCompiling { 
    QMAKE_CXXFLAGS += -isystem ../libs/boost159/ 
} else { 
    INCLUDEPATH += ../libs/boost159/ 
} 

这样QtCreator的解析不会失败,但在编译,将使用isystem。有任何想法吗?

exoplicitly:如何创建一个条件表达式,只有当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 
} 

设置则必须在项目管理中进行。不要忘记设置它发布和调试:

image description

+0

辉煌!我希望我能两次上瘾! – sage

+0

很高兴我能帮到你。请注意,当C文件包含并通过C编译器编译时,会出现一个警告。我假设'QMAKE_CFLAGS'对于那些人来说是正确的变量,但是我没有完成对这个话题的研究。 –

+0

感谢您的警告 - 我的情况是只有库链接的头部(或者只有头部库)。 – sage

相关问题