qtcreator无法识别<Eigen / Dense>来突出显示语法,但是<Eigen>

时间:2019-10-24 17:29:45

标签: c++ qt-creator

我最近升级到Qt Creator 4.8.2。

导入一个大型C ++项目时,QTcreator无法识别#include <Eigen/Dense>,产生致命错误,并且似乎放弃了所有头文件,以进行语法检查。结果,显示了许多错误的语法警告和错误。

在先前版本的QTcreator <Eigen/Dense>中也没有被识别,但是对于剩余的语法检查没有致命的后果。奇怪的是#include <Eigen>被很好地识别并且语法诊断是正确的。不能全部切换到<Eigen>,因为标准编译器无法识别。该问题似乎特别影响语法检查,其他功能(如符号使用等)似乎正在起作用。

我检查了.pro文件:列出了所有包含的文件。 在cmake生成的软件包下,代码可以完美编译。

问题:

  • 我可以说服QTcreator不要进一步破坏包括以下内容的包括 失败?
  • 我可以教QTcreator接受Eigen / Dense作为头文件吗?
  • 还有其他已知修复程序吗?

我考虑过但无法选择的选项:

  • 重命名本征标题:结构由本征确定 包。
  • 使用QTcreator构建:仅使用基本工具即可完全移植 项目定义。
  • 降级QTcreator是不可行的,因为目前的linux 发行版(Suse Leap 15.1,也是Tumbleweed)不支持它。

问题似乎是QT Creator无法解释包含中的/。 它也在这里中断:

#include "constants.h"
#include "alglib/integration.h"
#include "basisfunctionciion.h"

如果我将其替换为#include "integration.h",效果很好,但这不是一个很好的包含名称。

.pro是1500行,此处提到了include的周围:

SOURCES += CAPP/main_endless.cpp \
           CMakeFiles/feature_tests.c \
           CMakeFiles/feature_tests.cxx \
           TOOLS/main_test.cpp \
           LIBRARIES/alglib/integration.cpp \
           LIBRARIES/alglib/interpolation.cpp \
           LIBRARIES/alglib/linalg.cpp \

解决方法

我介绍了辅助头文件,例如qtEigenDense.h

/// QT creator cannot handle '/' in includes - workaround for Eigen/xxx and alglib/xxx.h
#include <Dense>

可以跟踪文件,但仍然让我使用其他出色的工具。

0 个答案:

没有答案