Сборка Qt3D под окнами не выполняется из-за того, что Vulkan SDK не найден (но в пути)
Я пытаюсь собрать Qt3D, поскольку он, похоже, больше не поставляется с Qt6 по умолчанию .
Я только что завершил установку на ubuntu, без серьезных проблем (это помогло бы, если бы в инструкции по установке могло быть указано, что требуется vulkan sdk , что было неочевидно, но после установки SDK компиляция завершилась успешно). Я использовал Qt Creator для создания библиотеки.
Я пытаюсь сделать то же самое в Windows, я установил и perl, и vulkan в соответствии с инструкциями по установке выше. После открытия проекта qt3d.pro и попытки собрать его в режиме выпуска я застрял там, где требуется vulkan
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp: In lambda function:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:54:34: error: invalid use of incomplete type 'class QVulkanInstance'
QVulkanInstance* v = new QVulkanInstance;
^~~~~~~~~~~~~~~
In file included from C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:40:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance_p.h:60:7: note: forward declaration of 'class QVulkanInstance'
class QVulkanInstance;
^~~~~~~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:60:59: error: invalid use of incomplete type 'class QByteArray'
if (debug_mode || qgetenv("QT3D_VULKAN_VALIDATION").toInt())
^
In file included from C:/Qt/6.0.1/mingw81_64/include/QtGui/qtguiglobal.h:43,
from C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance_p.h:54,
from C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:40:
C:/Qt/6.0.1/mingw81_64/include/QtCore/qglobal.h:1259:7: note: forward declaration of 'class QByteArray'
class QByteArray;
^~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:61:14: error: invalid use of incomplete type 'class QVulkanInstance'
v->setLayers({ "VK_LAYER_KHRONOS_validation" });
^~
In file included from C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:40:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance_p.h:60:7: note: forward declaration of 'class QVulkanInstance'
class QVulkanInstance;
^~~~~~~~~~~~~~~
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:63:15: error: invalid use of incomplete type 'class QVulkanInstance'
if (!v->create())
^~
In file included from C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance.cpp:40:
C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\Src\src\render\surfaces\vulkaninstance_p.h:60:7: note: forward declaration of 'class QVulkanInstance'
class QVulkanInstance;
^~~~~~~~~~~~~~~
jom: C:\Qt\AdditionalLibraries\Qt\qt3d-6.0.1\build-qt3d-Desktop_Qt_6_0_1_MinGW_64_bit-Release\src\render\Makefile.Release [.obj\release\vulkaninstance.o] Error 1
первое сообщение об ошибке
error: invalid use of incomplete type 'class QVulkanInstance'
подсказывает мне, что библиотека не найдена. Я проверил свои переменные среды, т.е.
System variables
. Установщик vulkan SDK с именем
VULKAN_SDK
и
VK_SDK_PATH
как также описано в руководстве по началу работы с vulkan , оба указывают на корень папки установки, т.е.
C:\Program Files\VulkanSDK\1.2.162.1
. Я проверил свою переменную, также была добавлена папка bin
C:\Program Files\VulkanSDK\1.2.162.1\bin
. Даже при наличии этих записей я все равно получаю то же сообщение об ошибке, что и выше. Добавление обоих
C:\Program Files\VulkanSDK\1.2.162.1\Include
и
C:\Program Files\VulkanSDK\1.2.162.1\Lib
к
Path
тоже не меняет результата. Я должен сказать здесь, что я запускал некоторые из примеров vulkan, которые работали нормально (например, vkcube.exe).
Я создаю библиотеку (или, скорее, пытаюсь) в Qt Creator (используя Qt версии 6.0.1), и перед попыткой сборки я проверил, что все вышеперечисленные переменные среды доступны во время сборки (проверяя, что эти записи существуют в
Projects->Build Environment->Use System Environment->Details
).
Я также попытался добавить внешнюю библиотеку в файл qt3d.pro, но я предполагаю, что сценарий сборки не следует изменять и что ошибка скорее связана с моей средой сборки.
Есть предложения, где могла закрасться ошибка?
2 ответа
Я должен был упомянуть, что я использовал комплект MinGW по умолчанию для окон ... переход на MSVC, похоже, сработал, и я могу создать библиотеку сейчас, хотя не уверен, почему mingw не сработал. Может быть, проблема с разрешением? В любом случае, это решение приемлемо для меня, оставив этот ответ здесь на случай, если кто-то наткнется на это в будущем.
Решение:
скопируйте папку vulkan из пути установки Vulkan (C:\Dev\Vulkan\1.2.170.0\Include\vulkan) в путь включения Qt (C:\Dev\Qt\6.0.3\mingw81_64\include)