我最近升级到Qt Creator 4.8.2。
导入一个大型C ++项目时,QTcreator无法识别#include <Eigen/Dense>
,产生致命错误,并且似乎放弃了所有头文件,以进行语法检查。结果,显示了许多错误的语法警告和错误。
在先前版本的QTcreator <Eigen/Dense>
中也没有被识别,但是对于剩余的语法检查没有致命的后果。奇怪的是#include <Eigen>
被很好地识别并且语法诊断是正确的。不能全部切换到<Eigen>
,因为标准编译器无法识别。该问题似乎特别影响语法检查,其他功能(如符号使用等)似乎正在起作用。
我检查了.pro文件:列出了所有包含的文件。 在cmake生成的软件包下,代码可以完美编译。
问题:
我考虑过但无法选择的选项:
问题似乎是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>
可以跟踪文件,但仍然让我使用其他出色的工具。