Autoconf和Autotools的替代品?
问题描述:
答
我与SCons取得了很好的成功。它是用Python构建的,构建脚本本身就是Python脚本,这赋予了大量的表现力。来自网站:
SCons是一个开源软件构建工具 - 也就是下一代构建工具。可以将SCons看作是经典的
Make
实用程序的改进的跨平台替代品,其集成功能类似于autoconf/automake
和编译器缓存,如ccache
。总之,SCons是构建软件的一种更简单,更可靠,更快捷的方式。
答
我看过CMake,看起来像一个很好的选择,除非你正在交叉编译。如果你正在做本地编译,你应该试试吧
答
我正在冒着被低估的机会,但是,我必须承认,遗憾的是没有真正的自动工具替代品。 CMake,SCons,bjam都不错,但是当涉及到认真的工作时......很明显autotools是优越的,不是因为CMake不能做同样的事情,而是因为它很难做到这一点。
例如,CMake的,最流行的替代自动工具,有以下缺点:
- 不支持的gettext的。当您需要管理大量翻译和翻译源代码时,这可能是一个真正的问题。
- 不支持卸载目标。发现你不能卸载你安装的程序是非常不愉快的。
- 没有自动构建这两个共享和静态库。
- 文档是非常有限和坏。
依此类推。
还有很多其他的观点。不幸的是,自动工具没有真正的高质量替代品。另一方面,如果您在Visual Studio的Windows 和上开发,则不能使用自动工具,而需要选择提供此类工具的CMake。
熟悉m4是无关紧要的。因为m4而针对autoconf争论就像争论C,因为编译器使用lex生成的词法分析器,开发人员不理解lex。使用自动工具时,可以完全忽略m4 98%的时间。在剩下的2%中,你也可以忽略m4!通常,如果您发现自己遇到与m4相关的问题,那是因为您正在做其他根本性错误。 – 2012-04-05 16:04:21
@WilliamPursell自从我问了这个问题后经过了几年,我倾向于同意。但问题依然存在 - 使用它从根本上走向错误太容易了。而且,当你想要从配置中进行真正的粒度构建控制时,你最终打M4。除非我错过了什么? – 2012-04-06 07:28:38
@TimPost几年前,我不得不面对类似的争论。没有人想学习M4(或任何可以帮助的东西)。该项目成为了bash和python脚本的组合,再加上一个可怕的C++应用程序,主要是使用C风格的宏。最后,在系统变得任意复杂(C++应用程序通过`system(2)`调用python和shell脚本)6个月后,有权切换它,我用200行M4脚本换掉了这个混乱。我永远不会接受“我们不想学习它”作为一个有效的借口。 – DevNull 2017-12-04 17:07:16