如何使用 qml 组件(不带 C++)创建插件的 deb 包

How to create a deb-package of plugin with qml components (without C++)

本文关键字:插件 创建 deb C++ qml 何使用 组件 不带      更新时间:2023-10-16

在标准情况下,人们有机会使用C++创建qml插件。这很容易,但是整个互联网都没有关于创建qml组件的内容。我的意思不是真正"创建"组件,而是使其能够打包和部署,例如"qmake;做;进行安装"算法,它将查找 qmldir 文件并添加到"安装"那里描述的 qml-组件的复制操作。

如果是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

您只需遵循相同的安装过程,只是将组件安装到导入时将识别它们的路径中。请参阅引擎中的导入路径列表。

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

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

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