用于C ++项目的任何好的构建工具,可以替换make吗?

时间:2008-09-10 16:54:05

标签: c++ build-process makefile

我想知道是否有任何漂亮而又整洁的工具来替换GNU Autotools或Make来构建一个非常大的C ++项目,这是一个非常复杂的事情。

如果项目很小,生成Autotools所需的所有文件很简单,但如果源代码分为多个目录,多个第三方库和许多依赖项,则属于“Autotools Hell”。

感谢任何建议

9 个答案:

答案 0 :(得分:18)

CMake? (生成makefile,因此技术上不是替代品)。

我最近也看到“SCons”出现在几个地方。虽然我自己没有创造任何东西。

答案 1 :(得分:18)

Google V8 JavaScript Engine是用C ++编写的,并使用SCons,所以我猜这是一票。

答案 2 :(得分:15)

看看waf

我认为您可以将其视为make和autotools的完全替代品。它基于python。我喜欢waf的一件事是waf脚本本身是你放在项目根目录中的~100kb独立版本。这与make或rake和朋友形成对比,其中必须首先安装构建系统。你必须安装python> = 2.3。

~$ ./waf configure && ./waf && ./waf install

Waf相当于Makefile是wscript文件。它是一个python脚本waf读取,它定义了至少3个函数:set_options()configure(conf)build(bld)。你可以猜出他们每个人做了什么。

要快速启动,我建议您查看源代码发行版中的demos / cpp / *文件。另请查看doc / waf.pdf文件;这是一份12页的文档,可以快速启动并运行。

答案 3 :(得分:11)

要比较各种C ++构建工具的速度,您可以查看此基准测试: http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/time.xml

答案 4 :(得分:5)

我们将Jam用于复杂的C ++项目 - 一个好处是它很好地跨平台。而不是我掏出好处,只需快速浏览一下这个链接: http://www.perforce.com/jam/jam.html

答案 5 :(得分:5)

Noel Llopis撰写了一些比较构建系统的文章。 “寻求完美构建系统”的第1部分位于http://gamesfromwithin.com/the-quest-for-the-perfect-build-system。第2部分在同一网站上。在http://gamesfromwithin.com/?p=104报告了对Scons的重试。

结论:SCons太慢了...... Jam是胜利者。

答案 6 :(得分:2)

Cook是另一种可用于替换make的工具。我见过几家大公司正在使用它。因此,即使网站看起来相当过时,它仍然是企业准备就绪。

http://miller.emu.id.au/pmiller/software/cook/

答案 7 :(得分:2)

我在一个大型c ++项目(在Linux和Windows上)上使用SCons,它运行得非常好。

scons all -j8(并行编译目标文件)非常酷!

答案 8 :(得分:1)

我使用bakefile作为构建过程,我成了一个忠实粉丝!

我不再需要自己编写Makefile了,更不用说可怕的GNU autotools脚本了。我所要做的就是提供一个描述构建目标的XML文件。 Bakefile可以将其转换为Makefile,它可以获取所有(头文件)依赖关系等,其中可以选择不同的Makefile格式(从文档中粘贴列表):

available formats are:
    autoconf      GNU autoconf Makefile.in files
    borland       Borland C/C++ makefiles
    dmars         Digital Mars makefiles
    dmars_smake   Digital Mars makefiles for SMAKE
    gnu           GNU toolchain makefiles (Unix)
    mingw         MinGW makefiles (mingw32-make)
    msevc4prj     MS eMbedded Visual C++ 4 project files
    msvc          MS Visual C++ nmake makefiles
    msvc6prj      MS Visual C++ 6.0 project files
    msvs2003prj   MS Visual Studio 2003 project files
    msvs2005prj   MS Visual Studio 2005 project files
    symbian       Symbian development files
    watcom        OpenWatcom makefiles
    xcode2        Xcode 2.4 project files

我通常使用 autoconf 选项,它为我编写恼人的GNU autotools脚本。我必须调整configure.ac脚本,以便configure在任何系统上查找某个库。但这并不算太糟糕。以这种方式获取autoconf脚本是很好的,因为我不必自己编写它们,当我分发我的项目时,它看起来好像我已经编写了它们,用户仍然可以在上帝中构建我的项目 - 给定方式,

./configure && make && make install