Qt应用程序:如何从Mac创建Windows(& Mac)的独立可执行文件?

时间:2015-12-31 12:51:47

标签: c++ windows macos qt qt-creator

我在MacBook(El-Capitan 10.11.2)中开发了一个Qt应用程序,现在已准备好发布。

我现在想要的是为Mac和Windows操作系统创建独立的可执行文件

但我不知道怎么做!

我发现了这个link但是我无法遵循它是指导,它看起来与我的系统向我展示的不同。

如果您有任何想法,请帮助我。

谢谢

1 个答案:

答案 0 :(得分:5)

好吧,要编译Windows应用程序,您需要一台Windows机器(或至少一台虚拟机)。你不能在mac上编译windows。

关于“独立”:简单的方法是将您的应用程序与所有必需的dll /框架一起部署,并将它们作为一个“包”发布。为此,有windeployqtmacdeployqt工具。但是,这些不是“单个文件”应用程序,而是文件集合。

如果您想拥有一个文件,则必须静态构建Qt!你可以这样做,但你必须自己做。如果你这样做,请注意LGPL许可证(免费版Qt的许可证)要求你公开你的程序的源代码!如果您只是链接到动态库,情况并非如此。

编辑:

部署

部署可能非常困难,因为每个平台都必须采用不同的方式。大多数情况下,您将有3个步骤

  1. 依赖性解析:在此步骤中,您将收集应用程序所需的所有exectuables / lirabries / translations / ...并将它们收集到彼此可以找到的位置。对于windows和mac,可以使用我上面提到的工具来完成。
  2. 安装:在这里你必须创建某种“安装程序”。最简单的方法是创建一个包含所需的所有东西的zip文件。但是如果你想要一个“好”的安装,你将不得不为每个平台创建适当的“安装程序”。 (许多可能性之一是Qt Installer Framework。关于它的最好的事情:它是跨平台的。)
  3. 分发:分发是指如何将程序提供给用户。在Mac上,你将拥有App-Store,对于你没有的Windows。最好的方法是在为此创建的网站上提供下载(如sourceforge,github,...)
  4. 我可以帮助你完成第一步,但是对于第二步,你将不得不研究可能性并决定一种方法。

    依赖关系

    解决依赖关系可以通过静态构建Qt来完成(这样你将只有一个文件,但是因为你必须编译Qt而获得额外的工作)或者使用动态构建。对于动态构建,Qt将帮助您解决依赖关系:

    macdeployqt相当容易使用。在发布模式下编译您的应用并致电<qt_install_dir>/bin/macdeployqt <path_to_your_bundle>/<bundle>.app。完成后,所有Qt库都存储在<bundle>.app文件夹中。

    对于windeployqt基本相同:<qt_install_dir>\bin\windeployqt --release <path_to_your_build>\<application>.exe。所有依赖项都将位于build文件夹中。 (提示:将<application>.exe复制到空的directoy中,然后在该路径上运行windeployqt。这样就可以摆脱所有构建文件。

    关于静态构建:只需google它,你会发现任何平台的数百个解释。但除非您别无选择,只能使用一个文件(无论出于何种原因),否则建议您使用动态构建。关于用户体验:在Mac上,他们不会注意到差异,因为在这两种情况下,所有内容都将隐藏在应用程序包中。在Windows上,拥有多个文件是正常的,所以没人会打扰。 (如果您为Windows创建安装程序,只需确保添加桌面快捷方式。这样用户就可以单击“单个文件”。)