2016-08-17 6 views
1

기존 Qt 애플리케이션에 3D 기능을 추가하려고합니다. "Qt3D.Core"모듈이 설치되지 않았습니다.

TEMPLATE = subdirs 
QT += 3dcore 3drender 3dinput 3dquick qml quick 3dquickextras 
SUBDIRS = plugins/datasource \ 
      plugins/screenManager 

qml.files = apps modules sysui i18n am-config.yaml Main*.qml 
INSTALLS += qml 

편집

: 내가 1QML_IMPORT_TRACE 환경 변수를 설정 내 project.pro 파일에서 나는 QT 변수를 설정하십시오.

import Qt3D.Core 2.0 
import Qt3D.Render 2.0 
: 내가 필요로하는 3D 라이브러리를 가져 오려고

$ which qml 
/usr/local/Qt-5.7.0/bin//qml 
[email protected]:~$ which qmake 
/usr/local/Qt-5.7.0/bin//qmake 

을 내 .qml 파일 내부의

[DBG | default] QQmlImportDatabase::addImportPath: "/usr/lib/x86_64-linux-gnu/qt5/qml"                 [:0] 
[DBG | default] QQmlImportDatabase::addImportPath: "/usr/local/Qt-5.7.0/include"                   [:0] 
[DBG | default] QQmlImportDatabase::addImportPath: "/usr/local/bin"  [:0] 
[DBG | default] QQmlImportDatabase::setImportPathList: ("/usr/local/bin", "/usr/local/Qt-5.7.0/include", "/usr/lib/x86_64-linux-gnu/qt5/qml", "/home/aras/Projects/UI/imports/shared", "/home/aras/Projects/UI/imports/system") [:0] 
[CRIT | am.system] WARNING: could not register service org.freedesktop.Notifications on D-Bus (unix:abstract=/tmp/dbus-c9i1pNpEVT):      [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addLibraryImport: "QtQuick" 2.5 as "QQ2"          [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::importExtension: loaded "/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick.2/qmldir" [:0] 
[DBG | default] QQmlImportDatabase::registerPluginTypes: "QtQuick" from "/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick.2"          [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addLibraryImport: "QtQuick.Window" 2.2 as ""         [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::importExtension: loaded "/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Window.2/qmldir"                    [:0] 
[DBG | default] QQmlImportDatabase::registerPluginTypes: "QtQuick.Window" from "/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Window.2"      [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addFileImport: "sysui" -1.-1 as ""            [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addLibraryImport: "controls" 1.0 as ""           [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::importExtension: loaded "/home/aras/Projects/UI/imports/shared/controls/qmldir"                   [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::addLibraryImport: "utils" 1.0 as ""            [:0] 
[DBG | default] QQmlImports(file:///home/aras/Projects/UI/Main.qml)::importExtension: loaded "/home/aras/Projects/UI/imports/shared/utils/qmldir"                    [:0] 
[WARN | default] QQmlApplicationEngine failed to load component   [:0] 
[WARN | default] file:///home/aras/Projects/UI/Main.qml:6 module "Qt3D.Core" is not installed 
                      [:0] 
[CRIT | am.system] ERROR: Qml scene does not have a root object   [:0] 

Qt는이 /usr/local/Qt-5.7.0에 설치됩니다 지금은 내가 응용 프로그램을 실행 시행했을 때 다음을 참조

그러나 응용 프로그램을 실행하려고하면 다음 오류가 발생합니다.

...module "Qt3D.Render" is not installed 
...module "Qt3D.Core" is not installed 

나는 그것이 내가해야 할 필요가 있다고 생각했다. 내가 여기서 무엇을 놓치고 있니?

+1

"Qt 설치시 include 디렉토리에 $ QML2_IMPORT_PATH를 설정했습니다."이것은 틀 렸습니다. QML 가져 오기 경로는 C++ include와 아무 관련이 없습니다. 더욱이 Qt에 포함 된 QML 가져 오기를 찾으려면 해당 변수를 env 변수로 설정하지 않아야합니다. 그러니 그냥 놓지 마라. – peppe

+0

설명해 주셔서 감사합니다. 어떻게 그리고 어디서 그 변수를 설정해야하는지 말해 줄 수 있습니까? 'project.pro' 파일에 있나요? 여러 워드 프로세서가 해당 변수를 참조하지만 설정 방법은 밝히지 않았습니다. – Aras

+1

환경 변수이므로 실행 파일을 시작할 때 설정합니다. 제작자를 사용하는 경우 왼쪽의 프로젝트 창에서 상단의 주어진 키트에 대한 설정을 실행하고 거기에서 환경을 변경하십시오. 그러나 전체 요점은 * Qt 자체와 함께 오는 모듈을 위해 * 설정할 필요가 없다는 것입니다. 이들 모듈이 설치되었지만 발견되지 않으면, 대신에 환경 변수'QML_IMPORT_TRACE'를 1로 설정하고 실제로 발견했는지 확인하십시오. – peppe

답변

1

qt의 최신 소스 코드를 확인하고 빌드하여 내 qt 응용 프로그램에서 3D 작업을했습니다. 그런 다음 누락 된 모듈 문제가 발생하면 해당 모듈을 빌드합니다. 3D의 경우, 이것은 내가 한 것입니다 :

cd qt3d 
../qtbase/bin/qmake ../../qt5/qt3d 
make -j5 

이것은 소스 디렉토리 빌드가 잘못된 것으로 가정합니다. 소스 코드는 qt5 디렉토리 안에 있습니다. 희망이 사람을 도움이됩니다.

관련 문제