【问题标题】:Developing Windows applications on Linux? [closed]在 Linux 上开发 Windows 应用程序? [关闭]
【发布时间】:2010-11-17 07:08:08
【问题描述】:

我的主要操作系统是 Linux,但现在我不得不为 Windows 编写一些 C++ 应用程序。 我正在考虑在 Linux 机器上使用 WxWidgets 之类的跨平台库(以及一些关心其他平台依赖项)进行开发,然后将结果交叉编译到 mingw 目标。

所以我正在考虑使用的工具是

  • g++ 用于编译和交叉编译。
  • CMake
  • WxWidgets
  • ???用于制作 Windows 安装程序包
  • windows 版本测试用酒

还有我的问题:

  1. 我可以使用哪些免费(甚至更好的开源)Windows 安装程序来创建最终包?如果可以从 Linux 上准备软件包,那将会有所帮助。

  2. Wine是否足以测试交叉编译版本(在Linux版本中测试所有逻辑之后)?

  3. 这是个好主意吗? :-)

【问题讨论】:

  • 如果您手边有一份 Windows 副本,那么运行它的 VirtualBox 实例也不会对测试造成伤害。
  • 对于测试,至少 Virtual Box 是好的,当然最好的是自己安装 Windows。尝试在 Windows 中编写该应用程序。我喜欢我自己的linux。但是,如果您的 Building for Windows。在 Windows 中编程是你能做的最好的事情(当然对于 Windows 应用程序)。

标签: windows linux installation cross-platform wxwidgets


【解决方案1】:

也检查 Qt。这是一个非常丰富的跨平台框架。

至于安装程序,我强烈推荐WiX

为了进行测试,最好使用某种虚拟化技术,例如 Sun Microsystems 的 VirtualBox。我相信您可以使用 Windows 或 Windows 7 RC 的试用版,在 2010 年 3 月之前免费使用。

【讨论】:

    【解决方案2】:

    首先,是的,这是个好主意。我有几个项目以这种方式维护它们的 Windows 版本。

    无论如何,我建议您在 Windows 机器上测试最终产品。如果您拥有 Windows 操作系统的许可证,则可以使用虚拟化进行最终测试。

    我建议使用Autotools,它具有非常好的交叉编译支持,并且可以与交叉编译器一起“原生”工作。

    以Debian为例运行

    ./configure --host=i586-mingw32msvc
    

    这将创建正确的交叉编译 makefile,就像这是 Unix 项目一样。

    无论如何,我会建议开发一个跨平台版本和定时测试 使用 Wine/Windows 交叉编译的原生 Windows 版本。

    【讨论】:

    • 我们不能使用分析器是不是一个缺点?而且,如果我理解正确,优化过程会因一个操作系统而异。我怎么能解决这个问题?或者,正如您所提到的,在final testing in Windows 上进行一些工作并为优化烦恼是否更好。
    【解决方案3】:

    您暗示这些应用程序仅适用于 Windows 而不是跨平台的,在这种情况下,我认为答案是 3。- 这确实不是一个好主意 - 胜过其他的。

    原因是您无论如何都必须在 Windows 下直接或在虚拟实例中广泛测试应用程序。这样一来,您最好在目标操作系统下进行开发,因为您更有可能生成更好的应用程序——既可以更早、更彻底地捕获错误,又可以确保您的应用程序为您的用户“工作”。我当然不会相信只是 Wine

    我不是跨平台小部件的忠实粉丝。就像 Java 应用程序一样,您通常会得到一些看起来不太正确的东西,就像那些足以让您的应用程序对大部分用户产生不良影响的不可思议的差距一样。即使在稍微抽象一点的层面上,每个操作系统的应用程序对其工作方式的感觉也略有不同,您很可能最终会得到一个感觉就像是 KDE 应用程序的 Windows 应用程序,这会再次让您的用户望而却步.

    所以是的,当然可以这样做,但从最终产品质量的角度来看,这可能不是最佳方法。这样做会给你自己生产的东西带来一些障碍,我想说这可能会抵消你使用 Linux 平台的便利性。实际上,如果你能做到这一点,我会感到惊讶,因为我敢打赌,你会花更多的时间在小部件上尝试微调它们,以便它们在真实的 Windows 下正常工作,而不是你从使用不熟悉的 Windows 中获得的收益工具集。

    【讨论】:

      【解决方案4】:
        • InstallJammer 允许您为 *nix 和 Windows 创建安装程序。我不确定它是否允许交叉创建安装程序(即从 *nix 创建 Windows 安装程序)。 Bitrock InstallBuilder 是带有演示的商业选项。
        • 也许...如果您有 Windows 许可证,Dav 的建议会更好。
        • 如果它可以帮助您更好/更有效地工作,当然可以。

      让我们了解你的进展 - 这很有趣。

      【讨论】:

        【解决方案5】:

        2) 不,正如它所说的,Wine 不是 Windows,你不能像那样可靠地测试它。我建议在您的 Linux 中运行虚拟机,这将使您的工作更加顺畅。

        3) 听起来可能,对于图形方面,我还会考虑 GTK+,它用于 GIMP,在 Windows 和 Linux 上的工作原理大致相同。

        【讨论】:

          【解决方案6】:

          无论如何,您都需要 MSDN 许可证才能访问您想要测试的所有众多版本的 Windows。

          您需要在虚拟机上安装测试操作系统。这可以在您的 Linux 桌面上,但专用的盒子可能会更好。

          我不知道您计划支持多少个 Windows 版本,但您绝对应该对所有版本进行测试。 Wine 不是 Windows,Windows XP 也不等同于 Windows Vista、Windows 7 等。Windows 也有许多不同的发行版和语言,其中一些您无疑应该进行测试。

          无论如何,在 Linux 上开发。无论如何,使用跨平台小部件(是的,这些很好)。但是您仍然需要您的 MSDN 许可证才能安装测试操作系统。

          【讨论】:

            【解决方案7】:

            NSIS,Nullsoft Scriptable Install System 可以在 Linux 下编译并用于为 Windows 生成安装二进制文件。说明是here。阅读一般部分和基于 POSIX 构建的部分。

            我用它来为一些项目制作安装。

            【讨论】:

            • 我真的觉得 NSIS 是个坏东西。在工作或更好地尝试与 NSIS 合作几天后,我到处都感到痛苦......它不会报告错误(没有什么比写所有内容的日志,包括错误和未成功的命令),变量分配和使用似乎我不清楚。没有真正的乐趣。
            • 我使用 Inno Setup,它确实是最好的。
            猜你喜欢
            • 2016-01-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多