2014-12-06 25 views
1

在標準情況下,人們有機會使用C++創建qml插件。這很容易,但是整個互聯網沒有任何關於創建qml組件。我的意思是不是真正「創造」一個組件,而是使它能夠打包和部署,就像「qmake; make; make install」算法一樣,該算法將查找qmldir文件並添加到「安裝」qml組件的複製動作。如何使用qml組件創建插件的deb-package(無C++)

在C++插件的情況下,我能夠創建一個makefile,它將在正確的地方安裝任何東西(共享庫和qmldir)。我需要這個qml文件,但對於qml文件,我們沒有任何Makefile。

回到現實,我做了我自己的qml控制。我想將它打包成一個deb文件並將其上傳到我的ppa,之後我想將它用作另一個項目的依賴項。爲了創造我在上面說過的話,我應該遵循哪些步驟?

Control.qml

import QtQuick 2.2 

Rectangle { 
    width:20 
    height:20 
} 

qmldir

module my.controls 
Control 1.0 Control.qml 
plugin mycontrols 
+0

我不關注。您可以使用qmake規則以及raw make規則安裝任何東西。你到底面臨什麼問題?您可能想查看[harmattan組件](https://qt.gitorious.org/qt-components/harmattan-qt-components/source/7d9bf82a089a60429e279d26dc305d34386b7295 :),那時我曾經工作過。這正是你想要的。 – lpapp 2014-12-06 19:14:55

+0

那麼這裏沒有任何默認算法?我的意思是我需要用適當的安裝腳本自己創建一個完整的deb包,以便複製我需要的文件等。?我不擔心它只是要求在這裏任何算法或人們手動執行此操作。 – 2014-12-06 19:16:53

+0

你從來沒有任何算法。您總是爲自己編寫構建系統,特別是使用原始makefile。你爲什麼不使用qmake?如果某個「聰明」的人決定排除在哪裏安裝東西,我會很擔心。 – lpapp 2014-12-06 19:19:16

回答

3

您只需按照不同之處在於您安裝的組件到哪裏進口時,他們將能夠識別的路徑相同的安裝程序。見the import path list in the engine

默認情況下,該列表包含應用程序的可執行文件的目錄,在QML2_IMPORT_PATH環境變量指定的路徑,並從QLibraryInfo內建Qml2ImportsPath。

0

然而,你的解決方案也是解決方案,我可能會很快使用它,我仍然想回答我自己的問題。

假設我們有自己的qml組件和qmldir文件。在這種情況下,我們需要手動完成所有工作,但是我們可以創建.pro文件,它總是知道(通過qmake)安裝東西的位置。所以,pro文件必須是這樣的:

TEMPLATE = lib 

uri = my.controls 

# Input 
OTHER_FILES = qmldir \ 
    Control.qml 

qmldir.files = $$OTHER_FILES 
unix { 
    installPath = $$[QT_INSTALL_QML]/$$replace(uri, \\., /) 
    qmldir.path = $$installPath 
    INSTALLS += qmldir 
}