2017-03-08 39 views
1

我有一個項目的結構是這樣的:QML DIR沒有釋放

project 
-project.pro (subdirs) 
|-app 
| |-app.pro (app) 
| |-QML 
| |-CPP 
| |-ICONS 
| 
|-lib 
    |-lib.pro (subdirs, copied from qtvirtualkeyboard/src) 
    |-config.pri (copied from qtvirtualkeyboard/src) 
    |-virtualkeyboard 
    |-... 

lib -dir等於qtvirtualkeyboard/src只用dir和項目從SRCLIB改名。

現在,當我點擊在QtCreator
運行一切都正常運行,但因爲我想與windeployqt問題部署它就是QML -dir不會被複制到release -dir。

當我部署它(與make install其次爲windeployqt),我得到的文件結構:

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

我想可能是(我的錯)的.qmake.conf的錯,我不明白並從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 

或在projectfiles,其中lib.pro的一個直接從庫中複製的,並在自身app.pro運行良好,在我搬到它作爲一個子項目project.pro

(EDIT)app.pro

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 

我怎麼能解決這個問題,besids加入自定義部署步驟複製QML-DIR?在@KevinKrammer的回答之後,我總結出問題在於:qmlsrc.path = $$OUT_PWD/QMLOUT_PWD包含生成Makefile的路徑。這是對的,如果我只跑app.pro,但是當我運行project.pro它應該相當於$$OUT_PWD/[debug,relase,...]/QML所以$$PATH_TO_THE_EXE/QML
有沒有寫,不知怎的,那一般的方式,它的工作原理在兩種情況下:當我運行project.pro當我運行app.pro並在兩者中,releasedebug,模式?

+1

我編輯了我的答案,建議調試/發佈差異的選項處理 –

回答

2

您可以指定文件,即使使用通配符模式,如additional安裝目標,一些沿

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

INSTALLS += qmlfiles 

調試/釋放差異線可以以兩種方式處理

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

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