make for linux / freebsd的替代方法?

linux / freebsd有什么替代方法?

Solutions Collecting From Web of "make for linux / freebsd的替代方法?"

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

它比自动计算多种依赖性要快得多。

我的第一个问题是,什么是观众。 这是建立只有你的团队将建立的内部软件? 如果是这样,请浏览一些已经提供的选项。 如果这是其他人将要构建的东西,那么要么使用make,要么使用创建makefile的工具。 我们为Linux和其他Unix平台使用autoconf和automake。 在我看来,你需要一个非常好的理由去做别的配置; 使; 进行安装。 Boost有他们自己的工具(一个Jam的修改版本),每当我需要尝试在一个不寻常的机器上编译它时,它都会让我很烦恼。

cmake和imake都是建立实用程序,虽然Imake不再维护。 Cmake也是跨平台的,可以在Windows上使用。

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

巨魔科技制作了一个叫做qmake的工具,用来构建QT。 它通过生成makefile来工作 – Troll需要一个支持跨平台构建的工具 – 所以你还需要另一个make工具。

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

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

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

我听说过有关Jam的好东西。

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

请注意,如果你想在OCaml中编程,这个工具是非常有用的,因为OCaml链接器需要编译模块以依赖顺序出现在命令行上,并且在每次改变的时候确定这个顺序是不平凡的。

我用CMake来做更多的项目,包括移植一些基于自动工具的工具,我可以说它的工作非常好。 它主要适用于C / C ++跨平台项目。

我正在做的项目继承了一些使用Cons而不是Make代码(不要和Greg Hewgill的答案中的SCons混淆)。

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

主要的缺点(和我对不起,我的项目使用它的主要原因)是, Cons并不做make -j风格的并行构建。 如果你正在编译一些不依赖于其他文件的文件, Cons将会一次编译一个文件,而make -j会并行编译它们,如果你的机器上有多个核心和线程,这是非常棒的。

跨平台构建的另一个原因是kmakekbuild的一部分,用它自己的话来说: kBuild是一个为复杂任务编写简单makefile的makefile框架 )。 这是GNU make的增强版本。 它是由VirtualBox人开发的。 他们用它来为Windows,Linux,MacOS和Solaris构建他们的VirtualBox产品。 很便携!

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

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

它有一个相当陡峭的学习曲线,但它也与“WAF书”,以帮助过程。