【问题标题】:How to create a deb-package of plugin with qml components (without C++)如何使用 qml 组件创建插件的 deb 包(无 C++)
【发布时间】:2014-12-06 19:13:08
【问题描述】:

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

如果是 C++ 插件,我可以创建一个生成文件,它将在正确的位置(共享库和 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

【问题讨论】:

  • 我不关注。您可以使用 qmake 规则以及原始 make 规则安装任何东西。你到底面临什么问题?您可能想查看我当时使用的harmattan components。这正是你想要的。
  • 那么这里没有任何默认算法吗?我的意思是我需要自己创建一个完整的 deb 包,并使用正确的安装脚本来复制我需要的文件等..?我不担心它只是询问这里是否有任何算法或人们手动执行此操作。
  • 你永远不会有任何算法。您总是为自己编写构建系统,尤其是使用原始 makefile。你为什么不使用qmake?如果某些“智能”决定排除我在哪里安装东西,我会非常担心。
  • 我同意你的观点,但qmake 总是知道在哪里安装因为qtchooser 我认为。所以我需要找出默认的qml_import_path 并在那里安装文件。看来我得到了我需要的一切,谢谢。

标签: c++ qt qml qmake qtquick2


【解决方案1】:

您只需遵循相同的安装过程,除了将组件安装到导入时将被识别的路径中。见the import path list in the engine

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 2015-12-24
      • 2020-11-03
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多