如何用qml组件创建一个插件的deb包(没有C ++)

时间:2014-12-06 19:13:08

标签: c++ qt qml qmake qtquick2

在标准情况下,人们有机会使用C ++创建qml-plugins。这很容易,但是整个互联网都没有创建qml组件。我的意思是不是真的"创造"一个组件,但它能够打包和部署,像" qmake;使; make install"算法将查找qmldir文件并添加到"安装"在那里描述的qml-components的复制动作。

对于C ++ - 插件,我能够创建一个makefile,它将在正确的位置安装任何东西(共享库和qmldir)。我需要这个用于qml文件,但对于qml文件,我们没有任何Makefile。

回到现实,我已经制作了自己的qml-control。我想将它打包成deb文件并将其上传到我的ppa,之后我想将它用作另一个项目中的依赖项。我应该遵循哪些步骤来创建我在上面所说的内容?

Control.qml

import QtQuick 2.2

Rectangle {
    width:20
    height:20
}

qmldir

module my.controls
Control 1.0 Control.qml
plugin mycontrols

2 个答案:

答案 0 :(得分:3)

您只需遵循相同的安装过程,只是将组件安装到导入它们时将被识别的路径中。请参阅the import path list in the engine

  

默认情况下,列表包含应用程序可执行文件的目录,QML2_IMPORT_PATH环境变量中指定的路径以及QLibraryInfo中的内置Qml2ImportsPath。

答案 1 :(得分:0)

然而,您的解决方案也是解决方案,我可能很快就会使用它,我仍然想回答我自己的问题。

假设我们有自己的qml-components和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
}