你知道任何可以使用非递归make方式管理构建的构建工具吗?

4

我一直在stackoverflow上搜索,但是没有找到令人满意的答案。

Miller的论文“递归式Make被视为有害”在社区中很有名。基本上,我多年来一直在使用非递归式make来管理我的项目构建。到目前为止,我对非递归式make的经验非常积极。

为了给其他人提供一些启示,我已经成功地构建了约200万行代码的C++代码库。我能够正确地管理依赖关系。非递归式方法的好处在于我们可以利用并行构建。

我已经证明这份报告中的数据与至少5个大型项目的数据一致。但我一直在手动编写/移植非递归式make文件。

作为您可以想象的,对于大型项目来说,这需要很多工作。而且,主要的挑战是新团队成员很难理解/修改/调试现有的makefile。
所以我的问题是:社区中是否有人知道任何工具/脚本,可以进行非递归make,但在更高层次的抽象下管理makefile?我想了解是否有人编写了一些脚本或工具,从一些简单的输入规范生成最终的非递归makefile。

你看过CMake了吗?还是它实际上创建递归的makefile?我不记得了,也没有必要关心... - hyde
我听说过cmake很多次,但没有详细了解过。现在既然你提到了它,我可能会去看一下。但考虑到我们拥有的遗留代码,我认为不太可能转移到其他构建系统,而只能使用GNU make。无论如何,还是谢谢。 - ozox
1个回答

0

我正准备阅读这篇论文,但似乎由于微小更改导致的长时间构建是主要问题。

虽然一般来说构建系统很糟糕(我有自己制作构建系统的幻想),但我必须推荐CMake(就像hyde所做的那样)。

虽然不完美,但对于超过几个文件的项目而言,它比普通的make优越。脚本语言有些丑陋,但比make好。它需要一点时间来适应,因为它抽象了许多你在make中手动编写的内容,但我建议使用这个: http://web.cs.swarthmore.edu/~adanner/tips/cmake.php


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