3

对于超过一百万行的多平台项目,构建系统的最佳选择是什么,该项目使用 GNU 和 Microsoft 工具链为所有主流操作系统生成驱动程序、库、命令行工具、GUI 和操作系统安装包?

我们的源代码主要是 C,带有 Python、C# 和 GNU makefile,以及一点 C++ 和 bash。它主要驻留在一个存储库中,但我们将源代码推送给各种第三方,这些第三方都有自己的源代码存储库。保持快速构建也有一些兴趣,这可能涉及拆分项目。

目前我们混合使用 GNU make、bash、python 和微软的 DDKBUILD。主要问题是我们在 make 之上维护了一组复杂的脚本,并且更愿意使用第三方(最好是开源)工具,而且 cygwin 在 Windows 上并没有被证明是健壮的(例如,fork 并不总是可能的) ),并且我们当前的构建系统不会构建或安装工具链,因此容易受到工具链版本更改的影响。

4

6 回答 6

4

我投票支持 CMake,它是一个真正从头开始重写 KDE4 构建系统的元构建工具——并使 KDE4 现在成为一个跨平台的桌面,甚至可以在 WindowsCE 上运行!

CMake 是将 KDE4 移植到地球上任何操作系统的载体——通过为大约 40 个具有相关工具链的操作系统生成 Makefile(或 Windows 中的 vcprojs)!

于 2009-04-10T15:15:16.717 回答
1

JetBrains TeamCity 总体上运行良好,因此值得列入评估列表。

ThoughtWorks Cruise 也在同一空间。虽然它是 v1,但它来自一个已经存在了一段时间的马厩。

Team Foundation Server 没有什么可以让您根据您的情况将其计算在内,但开箱即用的它可能比我提到的其他两个更以 MS-shop 为中心。

作为一般评论,随着您拥有的多样性水平,您肯定想尝试任何您想要使用的东西 - 仅仅因为某些东西被支持作为盒子上的勾号并不意味着它会适合 oyu 正在寻找的东西。

于 2008-12-11T10:22:39.667 回答
1

迪克森,

您的构建主要是单片的还是您想单独构建一些库并将它们组装到更大的应用程序中?如果项目间的依赖关系很重要,那么您的选择很快就会受到限制。AnthillPro做得很好,我认为TeamCity有一些 Ivy 集成支持。根据您的说法,这听起来不是绝对需要,但可能有助于加快构建速度。这当然是我们已经看到许多团队有效执行的策略。

由于您正在查看跨平台(我假设是多台机器)构建,因此排除了 Hudson 以外的大多数开源工具。

构建服务器比较矩阵由我们在 Thoughtworks 的朋友在这里托管:confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

祝你好运。

于 2008-12-11T17:59:33.283 回答
1

您应该将CMake列在要调查的替代方案列表中。CMake 是一个元工具,即它为您选择的构建工具(GNU make、Visual Studio 等)生成输入。我可以强烈推荐它。

于 2008-12-30T23:04:44.887 回答
1

你可能想看看克鲁斯。它基于 Java 构建,因此可以在任何支持它的平台上运行。您还可以在不同的机器上拥有多个构建代理,它们可以在不同的平台上执行不同的任务。Thoughtworks 仍在构建它,因此缺少一些功能,但它可能是一个不错的选择,因为您正在寻找真正的跨平台功能。

于 2009-01-03T14:22:52.790 回答
1

SCons是一个用 Python 实现的跨平台构建系统。我们使用它在三个平台上构建我们的代码。它可以自动检测您的构建工具,但您也可以将任意 Python 代码放入构建脚本中。它还允许您将环境设置与项目结构的描述分开,这是在不同环境中重用您的 buidl 脚本的一个很好的功能。除了直接构建项目外,它还可以生成 Visual Studio 项目文件。

于 2009-04-29T16:30:11.607 回答