跨平台构建环境

7
作为优秀的开发人员,我们尽可能使代码符合标准,以帮助在不同平台之间进行移植。但有哪些工具可用于帮助我们在多个平台上以统一的方式构建代码呢?
*nix家族有“make”,但Windows需要“nmake”。
我读过SCons的介绍,但从未亲身使用过。您最喜欢的构建工具是什么,为什么认为它有效,并且是否存在任何限制(例如:支持不佳的平台等)。
还有跨平台的IDE。

你有特定的编程语言想法吗? - Henry B
1
当你说你从未“愤怒地”使用过scons时,我不明白你的意思。 - grieve
@grieve:我已经阅读了文档,玩过它来设置玩具项目,但从未在企业级项目中使用过。 - Martin York
我非常确定你可以在Windows上的Cygwin上使用make。 - WhyNotHugo
8个回答

4

我个人使用ant、rake和maven2。我最常使用的是ant,因为它有以下几个优点:

  • 由于它是Java编写的,所以可以在许多平台上运行(无需更改任何脚本)

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

  • 有很多第三方扩展可用,并且很容易编写插件


4

语法很糟糕,但它可以轻松生成本地的Visual Studio项目文件。 - Arafangion
好的建议,但没有细节。 - xdhmoore

2
我们进行极端的跨平台开发,我们的代码可以在Linux、Windows CE、Windows 2K、nucleus和uCOS-II上运行。由于每个环境使用不同的“make”方法(例如,我们的nucleus客户要求我们通过code-warrior GUI编译)。
我曾经使用过ANT结合perl约两年时间,但这导致构建脚本完全无法维护。
现在我们转而使用python,这提高了脚本的可维护性。
底线是,我没有找到一个现成的工具,不得不自己构建。也许当我有时间时(2017?),我会打包我的脚本并分发它们....

那么你从未找到过一个可以跨平台工作的 CI 产品吗? - Tim
根据项目的规模和性质,自己开发可能是最好的选择。 - WhyNotHugo

0

如果你在Java世界中,有很多跨平台的工具可供选择。Apache Ant和Maven都是构建工具,可以在任何安装了Java的平台上运行。

Cruise Control(持续集成工具)也可以在Windows和Linux上运行(同样是用Java编写的)。

我没有遇到过核心工具的实际问题,唯一的问题有时来自于构建过程外部的事物,例如发布构件 - 这将因系统而异,因此我发现没有单一的设置方法。


0

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

Bakefile是跨平台、跨编译器的本地makefile生成器。它以与编译器无关的构建任务描述作为输入,并生成本地makefile(autoconf的Makefile.in、Visual C++项目、bcc makefile等)。

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


0

0

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


0

我们已经在过去的18个月中为Linux、Windows和Mac运行了一个Java环境。

  • Maven 2驱动我们的构建,这里很容易保持一致。当M2插件不敢涉足时,我们使用小型Ant脚本。
  • IDE方面,我们使用Eclipse和IDEA - 当然,两者都是多平台的。
  • 测试-JUnit、Fitnesse、Fest-都很好地支持多平台。
  • 发布脚本是用Ruby编写的。在这里,Windows会有一些麻烦,但是将路径转换为必要的函数通常可以解决问题。
  • TeamCity进行CI。我们实际上将其从Windows迁移到了Linux,并且没有遇到任何错误,非常好的软件包。

我们曾经使用GWT一段时间,这给我们带来了大量的痛苦。如果你想尝试,请小心。


你愿意详细说明一下关于gwt和跨平台编译的问题吗? - WhyNotHugo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接