首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用管理器打包Qt5应用程序

如何用管理器打包Qt5应用程序
EN

Stack Overflow用户
提问于 2018-03-31 12:49:48
回答 1查看 1.1K关注 0票数 2

我试图创建一个Qt/QML应用的snap包,应用程序打包得很好,当我试图运行它时,我会得到/snap/swipe-app/x2/bin/qt5-launch: 74: exec: application: not found错误。

这是我的snapcraft.yaml文件

代码语言:javascript
复制
name: swipe-app # you probably want to 'snapcraft register <name>'
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: Single-line elevator pitch for your amazing snap # 79 char long summary
description: description
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: strict # use 'strict' once you have the right plugs and slots

apps:
  swipe-app:
    command: qt5-launch application
    plugs:
      - unity7
      - home

parts:
  application:
     # See 'snapcraft plugins'
    plugin: qmake
    project-files: ["snap.pro"]
    source: .
    build-packages:
      - qtbase5-dev
    stage-packages:
      # Here for the plugins-- they're not linked in automatically.
      - libqt5gui5
           after: [qt5conf] # A wiki part
EN

回答 1

Stack Overflow用户

发布于 2018-06-18 11:43:36

正如您已经告诉启动脚本,您的程序名为application,那么当您运行snap时,它将尝试从当前的工作目录执行application。这里有两件事要注意:

工作目录保存在snap上下文之外的终端上。例如,如果您位于主目录/home/your-user中,那么swipe-app的工作目录也将是/home/your-user

由于上面的工作目录是您的主目录,那么没有任何锚点的命令(如application )将尝试在主目录中执行。因此,在您的示例中,启动脚本将尝试运行相当于/home/your-user/application的命令。

您可以通过确保启动脚本执行cd来更改工作目录(例如cd $SNAP),或者通过添加achor (例如command: qt5-launch $SNAP/application )来锚定命令来解决这个问题。

您可能需要检查的另一件事是,您的qmake构建实际上输出了名为application的二进制文件。如果您没有在您的TARGET=项目文件中设置snap.pro,那么二进制文件默认为snap而不是 application。这一行应该读取TARGET=application来生成一个名为application:(ref:https://doc.qt.io/qt-5/qmake-variable-reference.html#target)的二进制文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49587925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档