Qtcreator не узнаетдля подсветки синтаксиса, но делает <Eigen> - PullRequest
0 голосов
/ 24 октября 2019

Я недавно обновился до Qt Creator 4.8.2.

Импортируя большой проект C ++, QTcreator не может распознать #include <Eigen/Dense>, выдает фатальную ошибку и, по-видимому, отказывается от всех включаемых заголовков после для проверки синтаксиса. Как следствие, много ложных синтаксических предупреждений и ошибок отображаются.

В предыдущей версии QTcreator <Eigen/Dense> также не распознавался, но без фатальных последствий для оставшейся проверки синтаксиса. Любопытно, что #include <Eigen> распознается нормально, а синтаксический диагноз верен. Переключить все на <Eigen> не вариант, так как это не распознается стандартными компиляторами. Проблема, по-видимому, конкретно влияет на проверку синтаксиса, другие функциональные возможности, такие как использование символов и т. Д., Работают.

Я проверил .pro-файл: все включения перечислены. Код прекрасно компилируется под make-сгенерированным пакетом make.

Вопросы:

  • Могу ли я убедить QTcreator не прерывать дальнейшие включения, если одно из них не удалось?
  • МожетЯ учу QTcreator принимать Eigen / Dense в качестве файла заголовка?
  • Есть ли другие известные исправления?

Опции, которые я рассмотрел, но не могу выбрать:

  • Переименование заголовков Eigen: структура определяется пакетом Eigen.
  • Сборка с 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>

, которые отслеживают файлы и все же позволяют мне использовать отличный инструмент.

...