2017-03-08 2 views
1

에서이 같은 프로젝트 구조를 가지고있다.QML의 디렉토리는 출시되지

지금 모든 것을 내가 QtCreator
에서 실행을 클릭하면 잘 실행하지만 windeployqt 문제를 배포하고 싶은대로 QML -dir이 release -dir에 복사되지 않는 것입니다. 이해가 안되는, 나는 그것이 (내 잘못)이 .qmake.conf의 결함 일 수 있다고 생각

project 
|-.moc 
|-.obj 
|-.pch 
|-.rcc 
|-debug 
|-QML <-- This should not be here, but a subdir of release 
|-release 
    |-app.exe 
    |-...otherstuff 

: I합니다 (windeployqt 다음 make install 포함)을 배포 할 때

, 나는 파일 구조를 얻을 그리고 qtvirtualkeyboard

.qmake.conf 기술 :

load(qt_build_config) 
MODULE_VERSION = 5.8.1 

.qmake.stash : 나는로 이전하기 전에

QMAKE_DEFAULT_INCDIRS = \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include-fixed \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++ \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32 \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/backward 
QMAKE_DEFAULT_LIBDIRS = \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0 \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/lib/gcc \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/lib \ 
    D:/Qt/Qt5.7.0/Tools/mingw530_32/lib 

또는 lib.pro의 하나가 바로 저장소에서 복사 한 projectfiles,의에, 그리고 자체에 app.pro는 잘 실행되었다 서브 프로젝트 project.pro.

(EDIT)는 내가 besids는 QML - 디렉토리를 복사 할 사용자 정의 배포 단계을 추가하는 것으로 해결할 수있는 방법을

TEMPLATE = app 
QT += qml quick 
CONFIG += c++11 \ 
      disable-desktop 

SOURCES += main.cpp \ 
      ... 

RESOURCES += \ 
    ICONS\ICONS.qrc 

QML_IMPORT_PATH = 

include(deployment.pri) 

DISTFILES += \ 
    QML/... 
    ... 

HEADERS += \ 
    CPP/... 
    ... 

qmlsrc.files = QML/* 
qmlsrc.path = $$OUT_PWD/QML 

INSTALLS += qmlsrc 

을 app.pro? 의 답을 따라 @KevinKrammer은 문제가 qmlsrc.path = $$OUT_PWD/QML 안에 있다고 결론 내립니다. OUT_PWD은 Makefile이 생성되는 경로를 포함합니다. 난 단지 app.pro를 실행하는 경우에, 맞아,하지만 난 project.pro를 실행할 때 그렇게 $$PATH_TO_THE_EXE/QML
가 일반적으로 어떻게 든 그것을 작성하는 방법은 두 경우 모두에서 작동하는지, 거기에 $$OUT_PWD/[debug,relase,...]/QML에 해당해야합니다 : 때 나는 project.pro를 실행할 때와 app.pro을 실행하고 모두 releasedebug, 모드?

+1

내 대답을 편집하여 디버그/릴리스 차이에 대한 옵션을 제안했습니다. 취급 –

답변

2

additional 두 가지 방법

debug:qmlfiles.path = $$OUT_PWD/debug/QML 
release:qmlfiles.path = $$OUT_PWD/release/QML 

또는

에 핸들이 될 수

qmlfiles.files = QML/* 
qmlfiles.path = $$OUT_PWD/QML 

INSTALLS += qmlfiles 

디버그/릴리즈의 차이의 라인을 따라 뭔가를 목표를 설치하는 당신은, 심지어 와일드 카드 패턴을 사용하여 파일을 지정할 수 있습니다

CONFIG(debug, debug|release) { 
    qmlfiles.path = ... 
} else { 
    qmlfiles.path = ... 
}