对于linux / freebsd,make有哪些替代方法?
答案 0 :(得分:9)
我喜欢SCons。它的构造方式使得每个构建脚本(SConstruct
文件)也是一个语法上有效的Python程序。因此,如果需要,可以在构建脚本中构建任意Python逻辑。
它也比make
快得多,并自动计算多种依赖关系。
答案 1 :(得分:6)
我的第一个问题是,观众是什么。这是用于构建只有您的团队才能构建的内部软件吗?如果是这样,请探索已经提出的一些选项。如果这是其他人将要构建的东西,要么坚持使用make,要么使用创建makefile的工具并运送它们。我们为Linux和其他unix平台使用autoconf和automake。在我看来,你需要一个非常好的理由来做除配置以外的事情;使; make install。 Boost有自己的工具(Jam的修改版本),每当我需要尝试让它在一台不寻常的机器上编译时,它就会让我烦恼。
答案 2 :(得分:5)
cmake和imake都是构建实用程序,但不再维护Imake。 Cmake也是跨平台的,也可以在Windows上使用。
如果您使用的是java,ANT是一个面向Java的构建工具(它与Make的搭配并不是很好)。
Troll tech制作了一个名为qmake的工具,用于构建QT。它的工作原理是生成makefile - Troll需要一个工具来支持跨平台构建 - 所以你仍然需要另一个make实用程序。
答案 3 :(得分:4)
Automake:p,这是大多数Linux应用程序发行版中常用的,但它比Makefile提供了更多的工作,但效果更好http://www.gnu.org/software/automake/
http://www.openismus.com/documents/linux/automake/automake.shtml< - 关于如何使用automake和autoconf的好解释
答案 4 :(得分:4)
如果你正在寻找完全不同的东西,那就是Ant。我自己并不感兴趣,但它确实提供了一些便携性优势(不依赖于unix shell等)。
答案 5 :(得分:4)
我听说过有关Jam的好消息。
答案 6 :(得分:3)
OMake是一个用于C / C ++,OCaml和LaTeX的构建工具,具有自动依赖性分析功能。它可以轻松地在多个目录上构建项目,并且它可以根据MD5总和而不是时间戳来查找更改。它还有一个模式,可以在后台运行,每当修改文件时构建项目。通常,构建常见类型的项目(C / C ++或OCaml程序和库)所需的代码少于make。我没有尝试过更大的项目。
注意,如果你想在OCaml中编程,这个工具真的很有用,因为OCaml链接器要求编译模块以依赖顺序出现在命令行上,并且每次更改时都要计算出这个顺序是非常重要的。 / p>
答案 7 :(得分:3)
我已经在我的项目中使用了CMake,包括移植一些基于autotools的项目,我可以说它能很好地完成它的工作。它主要适用于C / C ++跨平台项目。
答案 8 :(得分:2)
我正在开展的项目继承了一些使用Cons
代替Make
的代码(在Greg Hewgill的回答中不要与SCons
混淆)。
Cons
是用Perl编写的,很像SCons
是用Python编写的。它自动管理依赖项,您可以使用构建脚本中的任何Perl代码来处理复杂的构建序列。
主要的缺点(以及我很抱歉我的项目使用它的主要原因)是Cons
没有以make -j
的方式进行并行构建。如果你正在编译一些不依赖于彼此的文件Cons
将一次编译一个,而make -j
将并行编译它们,如果你有多个核心,这很好和机器上的线程。
答案 9 :(得分:1)
跨平台构建的另一个原因是kmake
(kbuild
的一部分,用它自己的话来说: kBuild是一个用于为复杂任务编写简单makefile的makefile框架。)。它是GNU make
的增强版本。它是由VirtualBox人员开发的。他们使用它来构建适用于Windows,Linux,MacOS和Solaris的VirtualBox产品。很便携!
有关详细信息,请参阅http://svn.netlabs.org/kbuild。
答案 10 :(得分:1)
WAF是一个有趣的选择。用python编写,它允许你用纯Python编写你的构建逻辑。并行构建+基于半自动魔术签名的依赖性跟踪工作相当不错。它应该是跨平台的(即知道如何在Windows上进行构建),但我没有尝试过。
它有一个相当陡峭的学习曲线,但它也附带"The WAF book"来帮助这个过程。