当前位置:  开发笔记 > 编程语言 > 正文

Autoconf和Autotools的替代品?

如何解决《Autoconf和Autotools的替代品?》经验,为你挑选了5个好方法。

我是GNU Autotools的常用用户(主要是Autoconf,偶尔也是Libtool).我正在开展一个可移植性将成为关键点的项目.然而,团队的其他成员只是不习惯使用m4.我得到这个在我的收件箱从不是一个,而是四个人:

m4不是lisp,该死!

无论如何,也许有人可以推荐基于Python或PHP的东西?我正在研究一棵更大的树的C端; 我可以肯定会出现Python或PHP 5,因为它们是先决条件.



1> Artyom..:

我有机会被投票,但我必须承认,遗憾的是,没有真正的替代品.CMake,SCons,bjam很不错,但是,当涉及到认真的工作时...很明显autotools是优越的,不是因为CMake不能做同样的事情,而是因为它更难以这样做.

例如,CMake是autotools最受欢迎的替代品,它有以下缺点:

不支持gettext.当您需要管理大量翻译和翻译的源代码时,这可能是一个真正的问题.

不支持卸载目标.发现无法卸载已安装的程序是非常不愉快的.

没有自动生成两个共享和静态库.

文档非常有限而且糟糕.

等等.

还有很多其他要点.不幸的是,autotools没有真正高质量的替代品.另一方面,如果您在Windows Visual Studio 上进行开发,则无法使用自动工具,您需要选择提供此类工具的CMake.


人们常常忽略了Autotools用m4编写的原因.它是用m4编写的,因此可以在_pure shell_中生成配置脚本,以便可以定位任何UNIX平台.另一方面,CMake针对任何有CMake的东西.现在哪个更常见?CMake还是Bourne Shell?我倾向于说Bourne Shell.它也不是Windows忽略提供一个像样的shell的Autoconf错误的作者.
你说的都是真的!! 如果你坚持使用Windows/Linux x86/Mac OS X**SCons**和**CMake**看起来比自动工具更简单.但如果你来到一个不寻常的平台,你会遇到很多问题......

2> Greg Hewgill..:

我在SCons上取得了很大的成功.它是用Python构建的,构建脚本实际上是Python脚本本身,它提供了大量的表达能力.来自网站:

SCons是一个开源软件构建工具 - 即下一代构建工具.将SCons视为经典Make实用程序的改进,跨平台替代,具有类似于autoconf/automake和编译器缓存的集成功能,例如ccache.简而言之,SCons是一种更简单,更可靠,更快速的软件构建方式.



3> epatel..:

我听说过有关CMake的好事,试图解决同样的问题.这是维基百科的文章


谢谢,看起来Cmake将完全满足我的需求.这些天,如果我甚至是'带有火把和干草叉的'autoconf'村民出现在我的办公桌上:

4> raimue..:

有很多不同的替代Makefile生成器和构建系统:

CMake的

scons的

WAF

Boost Build(又名BJam,C++)

也可用,但不严格针对C/C++:

Premake

Ant(用于Java)

耙子(用于Ruby)

(当然,我只是不知道所有......)

但是在列出这些之后,autotools具有不需要对最终用户有任何其他依赖性的巨大优势.配置脚本仅由开发人员生成一次,并且在用户端不需要任何特殊内容,因为它是一个shell脚本.必须先安装上面列出的工具,然后才能构建源代码,甚至可能还有自己的依赖项.


那么,如果您在Windows上需要其他软件,那又有什么意义呢?如果你安装python或一些shell没有区别.

5> hendry..:

如何简单地使用Make和pkg-config?

这是一个Makefile模板,可以帮助您入门.

越少人越少.


Makefile模板不支持自动依赖,这是_really_ nice.
不是我的意思.我的意思是从头文件之间的源代码生成的内部依赖关系,就像GCC一样.一旦你弄清楚它是如何做的并不是特别难,但它可能有点痛苦.
喜欢那个gcc -MM -MG -MT的东西?https://github.com/dontcallmedom/widlproc/blob/master/Makefile#L102
是的,确实如此。:)将其添加到您的makefile模板中实际上是+1了
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有