12

为 linux/freebsd制作哪些替代品?

4

11 回答 11

9

我喜欢SCons。它的构造方式使得每个构建脚本(一个SConstruct文件)也是一个语法上有效的 Python 程序。因此,如果需要,您可以在构建脚本中构建任意 Python 逻辑。

make它也比自动计算多种依赖关系快得多。

于 2008-12-23T18:25:42.083 回答
6

我的第一个问题是,观众是什么。这是为了构建只有您的团队才能构建的内部软件吗?如果是这样,请探索一些已经提出的选项。如果这是其他人将要构建的东西,要么坚持使用 make,要么使用创建 makefile 的工具并发布它们。我们在 Linux 和其他 unix 平台上使用 autoconf 和 automake。在我看来,你需要一个很好的理由来做除了配置之外的事情;制作; 进行安装。Boost 有自己的工具(Jam 的修改版本),每次我需要尝试让它在不寻常的机器上编译时,它都会让我很烦恼。

于 2008-12-23T18:22:12.590 回答
5

cmakeimake都是构建实用程序,尽管不再维护 Imake。Cmake 也是跨平台的,也可以在 Windows 上使用。

如果你喜欢 Java,ANT是一个面向 Java 的构建工具(它不能很好地与 Make 配合使用)。

Troll tech 制作了一个名为qmake的工具,他们用它来构建 QT。它通过生成 makefile 来工作——Troll 需要一个工具来支持跨平台构建——所以你仍然需要另一个 make 实用程序。

于 2008-12-23T17:25:02.237 回答
4

Automake :p 在大多数 linux 应用程序发行版中常用,但它比 Makefile 提供更多的工作,但效果更好http://www.gnu.org/software/automake/

http://www.openismus.com/documents/linux/automake/automake.shtml <--关于如何使用 automake 和 autoconf 的很好的解释

于 2008-12-23T17:23:47.980 回答
4

如果您正在寻找完全不同的东西,那就是Ant。我自己对此并不感兴趣,但它确实提供了一些可移植性优势(不依赖于 unix shell 等)

于 2008-12-23T17:29:05.507 回答
4

我听说过有关Jam的好消息。

于 2008-12-23T18:21:24.713 回答
3

OMake是一个用于 C/C++、OCaml 和 LaTeX 的构建工具,具有自动依赖分析功能。它可以轻松地在多个目录上构建项目,并根据 MD5 总和而不是时间戳来查找更改。它还有一种可以在后台运行的模式,只要文件被修改,就可以构建您的项目。通常,与 make 相比,构建常见类型的项目(C/C++ 或 OCaml 程序和库)所需的代码更少。我还没有为更大的项目尝试过。

请注意,如果您想在 OCaml 中编程,此工具非常有用,因为 OCaml 链接器要求编译后的模块以依赖顺序出现在命令行中,并且每次发生更改时弄清楚此顺序并非易事。

于 2008-12-23T17:33:09.680 回答
3

我在我的更多项目中使用了 CMake,包括移植一些基于自动工具的项目,我可以说它做得很好。它主要适用于 C/C++ 跨平台项目。

于 2008-12-24T13:53:50.183 回答
2

我正在处理的项目继承了一些使用Cons而不是的代码Make(不要与SConsGreg Hewgill 的回答混淆)。

Cons是用 Perl 编写的,很像SCons用 Python 编写的。它自动管理依赖关系,您可以使用构建脚本中的任何 Perl 代码来处理复杂的构建序列。

主要缺点(也是我很抱歉我的项目使用它的主要原因)是Cons不会以make -j. 如果您要编译多个不依赖于彼此的文件,则一次Cons编译一个,而make -j并行编译它们,如果您的机器上有多个内核和线程,那就太好了。

于 2008-12-23T20:59:54.287 回答
1

另一个用于跨平台构建的 make 是kmake(它的一部分kbuild,用它自己的话来说:kBuild 是一个 makefile 框架,用于为复杂的任务编写简单的 makefile。)。它是 GNU 的增强版本make。它是由 VirtualBox 开发的。他们使用它来构建适用于 Windows、Linux、MacOS 和 Solaris 的 VirtualBox 产品。相当便携!

有关详细信息,请参阅http://svn.netlabs.org/kbuild

于 2011-05-13T07:12:36.567 回答
1

WAF是一个有趣的替代方案。用 python 编写,它允许你用普通的 Python 编写构建逻辑。并行构建 + 基于签名的半自动魔术依赖跟踪工作得相当好。它应该是跨平台的(即知道如何在 Windows 上进行构建),但我还没有尝试过。

它有一个相当陡峭的学习曲线,但它还附带“The WAF book”来帮助这个过程。

于 2014-01-17T23:24:44.800 回答