2008-12-23 68 views

回答

9

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

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

+1

别忘了CMake – 2008-12-23 22:07:40

4

Automake的:P这是常用的大多数Linux发行版的应用程序使用,但它给出了一个有点比一个Makefile更多的工作,但更好的效果http://www.gnu.org/software/automake/

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

+0

Autotools并不是`make`的替代品,因为最终它会生成GNUMakefiles。因此,现在您不再使用神秘的makefile语法,而是使用相当老式的shell脚本和`m4`宏作为锦上添花!换句话说,现在你有三个问题。 – 2015-08-29 20:01:14

5
很好的解释

cmakeimake都是构建工具,但Imake不再维护。 Cmake也是跨平台的,可以在Windows上使用。

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

巨魔科技制作了一个名为qmake的工具,它们用来构建QT。它通过生成makefile来工作 - Troll需要一种工具来支持跨平台构建 - 所以您仍然需要另一个make实用程序。

+0

奇趣已经搬出了qmake进入cmake,所以我会选择后者而不是前者。 CMake为各种IDE生成与IDE项目相同的makefile。 – 2008-12-23 17:56:11

+0

@dribeas说得对,QT和我相信整个KDE项目都转移到了CMake。 – 2008-12-23 22:05:02

+2

我不知道你为什么在同一句话中提到cmake和imake ... – JesperE 2008-12-28 18:30:23

4

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

3

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

请注意,如果你想在OCaml中编程,这个工具是非常有用的,因为OCaml链接器需要编译模块以依赖顺序出现在命令行上,并且在每次更改内容时都要弄清楚这个顺序。

4

我听说过好东西Jam

+0

链接是来自Perforce Jam的Freetype Jam。同样来自Perforce Jam的是Boost Jam,值得一看。我一直在使用Jam超过10年;我也推荐它。 – janm 2010-02-15 11:28:55

6

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

2

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

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

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

3

我已经使用了CMake来完成更多的项目,包括移植一些基于autotools的项目,我可以说它的工作非常好。它主要适用于C/C++跨平台项目。

1

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

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

1

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

它有一个相当陡峭的学习曲线,但它也带有"The WAF book"来帮助过程。