Неправильный путь для Qt mkspecs при генерации Makefile для VTK под Windows 10 - PullRequest
0 голосов
/ 24 августа 2018

Моя текущая задача - настроить рабочую среду для приложения, используя (статические) Qt и VTK, под Windows 10.

Я успешно установил статический Qt 5.11.1 и теперь хочу собрать VTK. Любая версия VTK, если она совместима с Qt 5.11.1, и модули Qt (VTK_Group_Qt) должны быть собраны. Для своей версии я выбрал VTK 8.1.1, но, как уже было сказано, подойдет любая версия.

Я использовал графический интерфейс CMake для настройки VTK, используя MinGW Makefiles (я использую MinGW64), что сработало. Затем я хотел продолжить генерацию Makefile, включив VTK_Group_Qt. Пути и версия Qt уже были правильно распознаны:

Qt5Core_DIR C: /build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Core

Qt5Gui_DIR C: /build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Gui

Qt5Widgets_DIR C: /build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Widgets

Qt5_DIR C: /build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5

Удостоверился, что все это существует. После этого я нажал Generate и получил следующую ошибку:

Импортированная цель "Qt5 :: Core" ссылается на файл

"C: /build_environment/qt-everywhere-src-5.11.1/qtbase /.../ qt -where-src-5.11.1 / qtbase // mkspecs / win32-g ++"

но этот файл не существует. Возможные причины включают в себя:

* Файл был удален, переименован или перемещен в другое место.

* Процедура установки или удаления не прошла успешно.

* Установочный пакет был неисправен и содержал

"C: /build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Core/qt5CoreConfigExtras.cmake"

но не все файлы, на которые он ссылается

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

Я мог бы попытаться переместить содержимое моей установки Qt так, чтобы путь был законным, но я бы посчитал, что это в значительной степени запах. Пошарить в структуре папок, которая должна быть правильной, - это не то, что я считаю хорошим решением. Я бы предпочел изменить один из файлов .cmake в Qt, но это также было бы скорее импровизированным подходом, чем реальным решением, насколько мне известно.

Одна вещь, которую я до сих пор пробовал, состояла в том, чтобы посмотреть на все переменные CMake (проверяя Advanced в графическом интерфейсе CMake), чтобы увидеть, все ли в порядке, и особенно, чтобы увидеть, должен ли этот ошибочный путь к mkspecs нашел где-то там. Не нашел ничего интересного.

У кого-нибудь есть идея, что пошло не так? Подскажите, нужна ли дополнительная информация. Параллельно я постараюсь собрать другие версии VTK, но я не слишком уверен, что это решит проблему.

1 Ответ

0 голосов
/ 24 августа 2018

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

Я перешел на qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Core/ и изменилфайл Qt5CoreConfigExtrasMkspecDir.cmake (после создания копии).

Исходный файл содержит одну строку

set(_qt5_corelib_extra_includes "${_qt5Core_install_prefix}/.../qt-everywhere-src-5.11.1/qtbase//mkspecs/win32-g++")

, которая ведет к неверному пути.Я изменил его на

set(_qt5_corelib_extra_includes "${_qt5Core_install_prefix}/mkspecs/win32-g++")

И теперь он работает нормально.Тем не менее, мне не очень хочется менять файл Qt, так как я рассматриваю ответ на вопрос «Виновата ли эта знаменитая библиотека?»быть "Скорее всего, я использовал это неправильно."

Возможное объяснение будет то, что я использовал неправильный префикс установки при настройке Qt, но разве мне нельзя разрешить вводить туда любой допустимый путь записи?Кроме того, префикс все еще находится в файле cmake и, следовательно, имеет некоторую достоверность.

Хотя это и есть ответ, поскольку он устранил проблему, я действительно хотел бы прочитать комментарии о том, что изначально могло пойти не так.

...