22

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

如果项目很小,生成de Autotools所需的所有文件很简单,但如果源代码分为许多目录,有多个第三方库和许多依赖项,你就会陷入“Autotools地狱”。

感谢您的任何建议

4

9 回答 9

18

制作?(生成makefile,因此从技术上讲不是替代品)。

我最近还看到“ SCons ”出现在一些地方。不过,我自己并没有用它创造任何东西。

于 2008-09-10T17:00:36.950 回答
18

Google V8 JavaScript 引擎是用 C++ 编写的并使用SCons 所以我猜这是对它的一票。

于 2008-09-10T17:14:33.640 回答
15

看看waf

我认为您可以将其视为 make 和 autotools 的完全替代品。它基于python。我喜欢 waf 的一件事是 waf 脚本本身是 ~100kb 独立的,您可以将其放置在项目根目录中。这与必须先安装构建系统的 make 或 rake 和朋友形成对比。不过,您必须安装 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 页的文档,可以让您快速启动并运行。

于 2008-09-11T00:01:05.177 回答
11

对于各种 C++ 构建工具的速度比较,你可以看看这个基准: https ://psycledelics.github.io/wonderbuild/benchmarks/time.xml

于 2009-01-12T00:08:42.847 回答
5

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

于 2008-09-10T17:20:05.750 回答
5

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

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

于 2008-10-07T21:57:15.640 回答
2

Cook 是另一个可以用来代替 make 的工具。我见过几家大公司在使用它。因此,即使网站看起来相当过时,它也已为企业做好准备。

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

于 2008-09-10T17:02:24.827 回答
2

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

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

于 2009-02-09T19:37:59.087 回答
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
于 2009-02-10T03:18:12.460 回答