你在这里谈论的是两件独立但相互交织的事情:
在自动工具中,您有几个项目:
让我们逐一看一看.
自动确认
自动确认可以轻松地扫描现有树以找到其依赖项,并创建一个配置脚本,该脚本将在几乎任何类型的shell下运行.配置脚本允许用户控制构建行为(即--with-foo
、--without-foo
、--prefix
、--sysconfdir
等)以及进行判断以确保系统能够编译程序.
Configure生成一个config.h
文件(来自模板),程序可以包含该文件来解决可移植性问题.例如,如果未定义HAVE_LIBPTHREAD
,则使用Forking .
我个人在许多项目中使用自动功能.人们通常需要一些时间才能习惯m4.然而,它确实节省了时间.
您可以让makefiles继承一些配置查找的值,而无需使用automake.
汽车制造商
通过提供一个简短的模板来描述将构建哪些程序以及构建这些程序需要链接哪些对象,可以自动创建符合GNU编码标准的Makefiles.这包括依赖处理和所有必需的GNU目标.
有些人觉得这更容易.我更喜欢编写自己的makefile.
利布托
利布托是一个非常酷的工具,可以简化任何类Unix系统上共享库的构建和安装.有时我用它;其他时候(尤其是在构建静态链接对象时)我是手工操作的.
还有其他 Select ,见问题100.
Build automation & GNU编码标准
简而言之,如果你向大众发布你的代码,你真的应该使用some种可移植的构建配置系统.你用什么取决于你自己.众所周知,GNU软件几乎可以在任何东西上构建和运行.然而,你可能不需要遵守这样的标准(有时甚至非常迂腐).
如果有什么不同的话,我建议您在为POSIX系统编写软件时try 一下自动确认.仅仅因为自动工具生成了与GNU标准兼容的构建环境的一部分,并不意味着你必须遵循这些标准(很多人不这么做!):)还有很多其他 Select .
Edit
不要害怕m4:)总有自动确认 macro archive个.有很多例子,或者是顺便判断一下.编写自己的或使用测试的内容.自动确认经常与汽车制造商混淆.它们是两个不同的东西.