当我使用 -isystem 标志而不是 INCLUDEPATH 时,QtCreator 的代码检查器中断
QtCreator's code inspector breaks when I use -isystem flag instead of INCLUDEPATH
我想抑制来自外部库的警告,这可以通过 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解析项目文件时trigger/not触发的条件表达式?
我找到了解决办法。您需要使用 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
}
然后必须在项目管理中进行设置。不要忘记为发布和调试设置它:
我想抑制来自外部库的警告,这可以通过 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解析项目文件时trigger/not触发的条件表达式?
我找到了解决办法。您需要使用 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
}
然后必须在项目管理中进行设置。不要忘记为发布和调试设置它: