有什么好的C ++项目构建工具可以代替make吗?

时间:2020-03-05 18:50:53  来源:igfitidea点击:

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

如果项目很小,则生成de Autotools所需的所有文件很简单,但是如果源代码分为多个目录,多个第三方库和许多依赖项,则我们会陷入" Autotools Hell"的境地。

感谢任何建议

解决方案

回答

CMake? (生成makefile,因此从技术上讲不能替代此类文件)。

最近,我还看到" SCons"在一些地方弹出。我自己还没有创建任何东西。

回答

Cook是可用于替换make的另一种工具。我已经看到一些大公司使用它。因此,即使网站看起来过时,也可以为企业准备就绪。

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

回答

Google V8 JavaScript引擎是用C ++编写的,并且使用SCons,所以我想这是一票。

回答

我们将Jam用于复杂的C ++项目,其好处之一是可以很好地跨平台使用。与其让我大开眼界,不如快速浏览一下此链接:
http://www.perforce.com/jam/jam.html

回答

看看waf。

我认为我们可以认为它可以完全替代make和autotools。它基于python。我喜欢waf的一件事是,waf脚本本身是〜100kb的独立脚本,我们可以将其放置在项目根目录中。这与make或者rake和friends相比,后者必须首先安装构建系统。我们必须安装python> = 2.3.

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

Waf等同于Makefiles是wscript文件。这是waf读取的python脚本,它至少定义了3个函数:set_options(),configure(conf)和build(bld)。我们可以猜测他们每个人的所作所为。

为了快速起步,建议我们查看源代码发行版中的demos / cpp / *文件。还要看看doc / waf.pdf文件;这是一个长达12页的文档,可快速入门和运行。

回答

Noel Llopis写了几篇比较构建系统的文章。 "追求完美构建系统"的第1部分位于http://gamesfromwithin.com/the-quest-for-the-perfect-build-system。第2部分在同一站点上进行。在http://gamesfromwithin.com/?p=104上报告了Scons重试。

结论:SCons太慢了。Jam是赢家。

回答

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

回答

我在一个大型c ++项目(在Linux和Windows上)上都使用了SCons,它确实运行良好。

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

回答

我在构建过程中使用了bakefile,因此成为了忠实粉丝!

我再也不必自己写Makefile了,更不用说可怕的GNU自动工具脚本了。我要做的只是提供一个描述构建目标的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