【问题标题】:Cross platform build environment跨平台构建环境
【发布时间】:2008-10-07 08:29:52
【问题描述】:

作为优秀的开发人员,我们会尽可能保持代码符合标准,以帮助在平台之间进行移植。但是有哪些工具可以帮助我们以统一的方式跨多个平台构建代码。

*nix 系列有 make,但 Windows 需要 nmake

我读过SCons,但从未在愤怒中使用它。您最喜欢的构建工具是什么,为什么您认为它有效,是否有任何限制(支持不良的平台等)。

跨平台 IDE 也是如此。

【问题讨论】:

  • 您有特定的语言吗?
  • 我不明白你的意思,当你说你从未“愤怒地”使用过 scons 时。
  • @grieve:我已经阅读了文档,使用它来设置玩具项目,但从未在企业规模的项目中使用它。
  • 我很确定你可以在 windows 上的 cygwin 上使用 make。

标签: cross-platform build-automation build-environment


【解决方案1】:

c/c++ 环境的 cmake 很好。 http://www.cmake.org/

【讨论】:

  • 糟糕的语法,但它可以生成本地 Visual Studio 项目文件,没有大惊小怪。
  • 好的推荐,但没有细节。
【解决方案2】:

我个人使用 ant、rake 和 maven2。我最常使用 ant 并发现它很棒有几个原因:

  • 因为它是 java 它可以在很多平台上运行(无需更改任何脚本)

  • 构建文件是用 XML 编写的,而且相当容易编写

  • 有很多 3rd 方扩展可供使用,并且很容易为它编写插件

【讨论】:

    【解决方案3】:

    我们进行极端的交叉开发,我们的代码在 linux、windows ce、windows 2K、nucleus 和 uCOS-II 上运行。 因为每个环境都使用不同的“make”方法(例如,外核客户要求我们通过 code-warrior GUI 进行编译)。

    我将 ANT 与 perl 结合使用了大约 2 年,但这导致构建脚本完全不可维护。

    现在我们开始使用 python,这增加了脚本的可维护性。

    归根结底,我没有找到现成的工具,必须自己构建。也许,当我有时间(2017 年?)时,我会打包我的脚本并分发它们......

    【讨论】:

    • 所以你还没有找到跨平台的 CI 产品?
    • 根据项目的大小和性质,自己滚动可能是您的最佳选择。
    【解决方案4】:

    如果您身处 Java 世界,那么有很多工具是跨平台的。 Apache Ant 和 Maven 都是构建工具,可以在任何支持 Java 的平台上运行。

    Cruise Control(持续集成工具)也适用于 Windows 和 Linux(它也是用 Java 编写的)。

    我对核心工具没有任何真正的问题,我有时遇到的唯一问题来自构建过程之外的东西,即发布工件 - 这会因系统而异,所以我发现没有单一的设置方式。

    【讨论】:

      【解决方案5】:

      对于 C/C++ 开发,我发现 bakefile 效果很好。相当大的 wxWidgets 项目是一个跨平台的跨平台实用程序和 UI 库,使用它来生成构建文件。

      Bakefile 是跨平台、跨编译器的原生 makefile 生成器。它将构建任务的独立于编译器的描述作为输入,并生成本机 makefile(autoconf 的 Makefile.in、Visual C++ 项目、bcc makefile 等)。

      Bakefile 的任务是生成本地 makefile,以便人们可以继续使用他们喜欢的工具。还有其他跨平台的 make 解决方案,但它们不是原生的,需要用户使用不熟悉的工具 (Boost.Build),或者它们太有限 (qmake)。

      【讨论】:

        【解决方案6】:

        您可以在 Windows 上使用 gmake 以及 cygwin/minGW 或在 Linux 上构建您的 windows 东西。 http://cdtdoug.blogspot.com/2009/05/mingw-cross-for-linux.html

        【讨论】:

          【解决方案7】:

          有一些工具,如 Opus Make 或 MKS Toolkit,可提供多平台和支持。如果您有一个现有的 make 脚本代码库,则可以更轻松地迁移到其中之一。我怀疑你可能会在 DDJ 杂志的广告中寻找类似的工具。

          【讨论】:

            【解决方案8】:

            过去 18 个月,我们一直在为 Linux、Windows 和 Mac 运行 Java 环境。

            • Maven 2 驱动我们的构建,在这里很容易使事情保持一致。 M2 插件不敢涉足的地方,我们使用小 Ant 脚本。
            • 在 IDE 方面,我们使用的是 Eclipse 和 IDEA - 当然,两者都是多平台的。
            • 测试 - JUnit、Fitnesse、Fest - 都是多平台的。
            • 发布脚本是用 Ruby 编写的。这里的 Windows 有点麻烦,但是根据需要转换路径的功能通常可以解决问题。
            • TeamCity 执行 CI。我们实际上已经将它从 Windows 迁移到 Linux 并且完全没有遇到任何错误,非常好的包。

            我们确实使用了 GWT 一段时间,这确实给我们带来了很大的痛苦。如果你朝那个方向摆动,请小心。

            【讨论】:

            • 您能否详细说明有关 gwt 和跨平台编译的问题?
            猜你喜欢
            • 1970-01-01
            • 2017-07-27
            • 2019-04-27
            • 1970-01-01
            • 1970-01-01
            • 2011-03-24
            • 1970-01-01
            • 1970-01-01
            • 2011-12-28
            相关资源
            最近更新 更多