【问题标题】:Packaging and distributing a QtRuby app as a gem? Or how?将 QtRuby 应用程序打包和分发为 gem?或者怎么做?
【发布时间】:2010-10-29 08:59:27
【问题描述】:

我已经完成了一个通过 qtbindings gem 使用 Qt 的 GUI 桌面 Ruby 应用程序,我需要发布它并满足一些要求:

  1. 用户不必构建或编译任何东西,尤其是 Qt 库,安装 Ruby 和 Rubygems 即可,但仅此而已
  2. 它必须在 Mac 和 Windows 上运行,最好是 Linux

我已经尝试过 tar2rubyscript 和 ruby​​script2exe,但由于一些隐秘的错误而失败了,正如我在 KDE-bindings mailing list 上所描述的那样

#qtruby IRC 频道上一位乐于助人的人建议我将其捆绑为 gem 并发布。我一直在尝试这样做,但我的问题是,如何将 qtbindings 链接到 static Qt 库?我制作了 gemspec,我使用了 bundler,但它是针对原生 Qt 开发库/头文件构建的。我的用户不会拥有它。

所以我的问题是:

  1. 我可以为此使用宝石吗?如果是这样,我如何让用户针对我提供的 Qt 静态库构建 qtbindings?
  2. 您知道打包 qtruby 应用程序的其他方法吗?你做到了吗?

【问题讨论】:

    标签: rubygems static-libraries packaging qtruby


    【解决方案1】:

    我在 Qt 方面做了很多开发,但我仍在学习 Ruby 和 QtRuby,所以,请谨慎对待。

    我不会走 gem 路线,会尝试像我以前开发的商业 Qt 应用程序一样打包它。

    包含程序运行所需所有内容的单个包。这将包括 Qt4 Ruby 绑定和 Qt 库以及您需要它运行但它不在 [Windows vanilla 安装/MacOS vanilla 安装/最普遍支持的 Linux 标准库] 上的所有其他内容,Ruby 解释器可能除外本身。

    将您的应用程序包装在脚本中以设置 LD_LIBRARY_PATH 和其他类型的环境变量,以确保一切都适用于您正在发布但未安装在 Linux 目标上的动态库。在 Windows 上,只需将它们(动态库)留在主文件夹中,尽管您也可以使用脚本路径。我从未在 Mac 上部署过,所以我不知道,但我可以想象它类似于 Linux 路线。

    我知道它并不优雅,但至少它有效。

    【讨论】:

    • 嗯,这是一个有趣的建议,我今晚要试试,我会回复我的进度。不过我有一张便条;动态库不能/不应该被打包,这就是为什么它们首先是动态的。我将构建 Qt 的静态版本并尝试使用它。虽然正如你所说,这不是很优雅。谢谢。
    • @amireh 这不是唯一应该共享的动机库——它们可以在应用程序的多个实例之间共享。与 X11 混合使用 Qt 的静态构建时,我没有很好的体验。 X11 无论如何都会动态加载一些库(延迟),如果某些结构发生变化,您的应用程序就会崩溃。我真的建议使用共享的 Qt,即使必须交付它。请发回您的经验。将来某个时候我也会做同样的事情(部署一个 QtRuby 应用程序),所以我有兴趣帮助你。
    • Py:我已经成功地为 Linux 构建了包。接下来我将继续使用 Mac,然后是 Windows。完成后,我将分享我的进度参考。
    • amireh - 我对你的进展很感兴趣 - 特别是对于 Windows 用户。我正在尝试确定编写一些内部应用程序的路径 - 到目前为止,我只关注 Titanium Appcelerator 和 QtRuby。我喜欢后者,缺乏适当的分发模型或至少没有指南阻止了我。
    • @amireh 想在帖子中写下这是如何工作的?很想学习如何做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多