对于linux/freebsd,make有哪些替代方法?make for linux/freebsd的替代品?
回答
我喜欢SCons。它的构建方式是每个构建脚本(一个SConstruct
文件)也是一个语法上有效的Python程序。因此,如果需要,可以在构建脚本中构建任意Python逻辑。
它也比make
快得多,并自动计算多种依赖关系。
Automake的:P这是常用的大多数Linux发行版的应用程序使用,但它给出了一个有点比一个Makefile更多的工作,但更好的效果http://www.gnu.org/software/automake/
http://www.openismus.com/documents/linux/automake/automake.shtml < - 关于如何使用automake和autoconf的
Autotools并不是`make`的替代品,因为最终它会生成GNUMakefiles。因此,现在您不再使用神秘的makefile语法,而是使用相当老式的shell脚本和`m4`宏作为锦上添花!换句话说,现在你有三个问题。 – 2015-08-29 20:01:14
cmake和imake都是构建工具,但Imake不再维护。 Cmake也是跨平台的,可以在Windows上使用。
如果你使用java,ANT是一个面向Java的构建工具(它并不能很好地与Make搭配)。
巨魔科技制作了一个名为qmake的工具,它们用来构建QT。它通过生成makefile来工作 - Troll需要一种工具来支持跨平台构建 - 所以您仍然需要另一个make实用程序。
奇趣已经搬出了qmake进入cmake,所以我会选择后者而不是前者。 CMake为各种IDE生成与IDE项目相同的makefile。 – 2008-12-23 17:56:11
@dribeas说得对,QT和我相信整个KDE项目都转移到了CMake。 – 2008-12-23 22:05:02
我不知道你为什么在同一句话中提到cmake和imake ... – JesperE 2008-12-28 18:30:23
如果您正在寻找完全不同的东西,有Ant。我自己对此并不是很感兴趣,但它确实提供了一些可移植性的优点(不依赖于unix外壳等)。
OMake是一款针对C/C++,OCaml和LaTeX的自动依赖分析构建工具。它可以轻松地在多个目录上构建项目,并根据MD5总和而不是时间戳找到更改。它还有一个可以在后台运行的模式,只要文件被修改就可以构建项目。通常,构建通用类型的项目(C/C++或OCaml程序和库)所需的代码少于构建项目。我还没有尝试过更大的项目。
请注意,如果你想在OCaml中编程,这个工具是非常有用的,因为OCaml链接器需要编译模块以依赖顺序出现在命令行上,并且在每次更改内容时都要弄清楚这个顺序。
我的第一个问题是,什么是观众。这是否用于构建只有您的团队将构建的内部软件?如果是这样,请探索一些已经提供的选项。如果这是其他人将要构建的东西,那么或者坚持使用make,或者使用创建makefile并运输它们的工具。我们为Linux和其他Unix平台使用autoconf和automake。在我看来,你需要一个非常好的理由去做一些配置以外的事情;使;进行安装。 Boost有他们自己的工具(Jam的一个修改版本),每当我需要尝试让它在一个不寻常的机器上编译时,它都会让我很烦恼。
我正在处理的项目继承了一些使用Cons
而不是Make
的代码(不要与Greg Hewgill的答案中的SCons
混淆)。
Cons
是用Perl编写的,很像SCons
是用Python编写的。它自动管理依赖关系,并且可以在构建脚本中使用任何Perl代码来处理复杂的构建序列。
主要的缺点(和我对不起我的项目使用它的主要原因)是Cons
不以make -j
的风格做并行构建。如果您正在编译多个不相互依赖的文件,Cons
将一次编译一个文件,而make -j
将并行编译它们,如果您的计算机上有多个核心和线程,则这非常棒。
我已经使用了CMake来完成更多的项目,包括移植一些基于autotools的项目,我可以说它的工作非常好。它主要适用于C/C++跨平台项目。
另一个让跨平台的构建是kmake
(的kbuild
的一部分,在其自己的话来说:的kbuild是用于编写简单的makefile复杂任务的makefile文件框架)。它是GNU make
的增强版本。它由VirtualBox人开发。他们用它来为Windows,Linux,MacOS和Solaris构建他们的VirtualBox产品。非常便携!
有关详细信息,请参阅http://svn.netlabs.org/kbuild。
WAF是一个有趣的选择。用python编写它可以让你用普通的Python编写你的构建逻辑。并行构建+基于半自动魔术签名的依赖关系跟踪工作得很好。它应该是跨平台的(即知道如何在Windows上构建),但我没有尝试过。
它有一个相当陡峭的学习曲线,但它也带有"The WAF book"来帮助过程。
别忘了CMake – 2008-12-23 22:07:40