我的主要操作系统是Linux,但现在我不得不为Windows编写一些C ++应用程序。 我正在考虑使用像WxWidgets这样的跨平台库(有些关心其他平台依赖项)在Linux机器上进行开发,然后将结果交叉编译为mingw target。
所以我正在考虑使用的工具是
我的问题:
我可能会使用哪些免费(或甚至更好的开源)Windows安装程序来创建最终包?如果可以从Linux编写软件包,将会有所帮助。
Wine是否足以测试交叉编译版本(在Linux版本中测试所有逻辑之后)?
这是个好主意吗? : - )
答案 0 :(得分:15)
检查Qt。这是一个非常丰富的跨平台框架。
至于安装人员,我强烈推荐WiX。
对于测试,使用某种类型的虚拟化(如Sun Microsystems的VirtualBox)要好得多。我相信您可以使用Windows或Windows 7 RC的试用版,可以在2010年3月之前免费使用。
答案 1 :(得分:4)
首先,是的,这是个好主意。我有几个项目,我以这种方式维护他们的Windows版本。
无论如何,我建议你在Windows机器上测试最终产品。如果您拥有Windows操作系统许可证,则可以使用虚拟化进行最终测试。
我建议使用具有非常好的交叉编译支持的Autotools,并使用交叉编译器“原生”工作。
在Debian下运行
./configure --host=i586-mingw32msvc
这将创建正确的交叉编译makefile,就像这是Unix项目一样。
无论如何,我建议开发跨平台版本和时间测试 通过交叉编译它们的本机Windows版本与Wine / Windows。
答案 2 :(得分:3)
让我们了解你如何继续 - 这很有趣。
答案 3 :(得分:3)
你暗示这些应用程序仅适用于Windows而不是跨平台,在这种情况下我认为答案是3. - 这实际上不是一个好主意 - 胜过其余的。
原因是您无论是直接还是在虚拟实例中都必须在Windows下广泛测试应用程序。因此,您最好在目标操作系统下进行开发,因为您更有可能生成更好的应用程序 - 既可以更早地捕获错误,又可以更彻底地捕获错误,并确保您的应用程序“适用于”您的用户。我当然不会相信只是 Wine。
我不是跨平台小部件的忠实粉丝。与Java应用程序一样,您通常最终会得到一些相当看起来正确的东西,并且就像不可思议的差距一样,足以让您的应用程序对大部分用户产生不良影响。即使在稍微抽象的层面上,每个操作系统的应用程序对它们的工作方式也有一些不同的感觉,你很可能最终得到一个感觉就像是KDE的Windows应用程序,这将再次让你的用户失望
所以是的,当然可以做到这一点,但从最终产品质量的角度来看可能不是最佳方法。这样做会让你自己产生一些障碍,我会说这可能会抵消你使用Linux平台的便利。实际上,如果你管理的话,我会感到惊讶,因为我敢打赌你会花更多的时间搞乱小部件试图对它们进行微调,这样它们就可以在真正的Windows下运行,而不是使用不熟悉的Windows。工具集。
答案 4 :(得分:2)
2)不,Wine说它不是Windows,你不能像那样可靠地测试它。我建议在你的Linux中运行一个虚拟机,这将使你的工作更顺畅。
答案 5 :(得分:2)
无论如何,您将需要MSDN许可才能访问您想要测试的所有Windows版本。
您需要在VM上安装测试操作系统。这可能在您的Linux桌面上,但专用的盒子可能会更好。
我不知道您计划支持多少个Windows版本,但您绝对应该对所有版本进行测试。 Wine不是Windows,Windows XP也不是Windows Vista,Windows 7等。还有很多不同的Windows发行版和语言,其中一些你无疑应该测试。
一定要在Linux上开发。无论如何,使用跨平台小部件(是的,这些都是好的)。但是您仍然需要MSDN许可证才能安装测试操作系统。
答案 6 :(得分:0)