Automake

维基百科,自由的百科全书
跳转到导航 跳转到搜索
Automake
File:Heckert GNU white.svg
开发者GNU计划
当前版本1.16.5[1](2021年10月3日,​4年前​(2021-10-03
原始码库
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
引擎
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    操作系统跨平台
    类型软件开发工具
    许可协议GNU通用公共许可证
    网站https://www.gnu.org/software/automake/
    File:Autoconf-automake-process.svg
    Flow diagram of autoconf and automake

    GNU Automake是一种编程工具,可以产生供make程序使用的Makefile,用来编译程序。它是自由软件基金会发起的GNU计划的其中一项,作为GNU构建系统的一部分。automake所产生的Makefile符合GNU编程标准。

    automake是由Perl语言所写的,必须和GNU autoconf一并使用。automake包含了以下命令:

    • aclocal
    • automake

    aclocal是个泛用的程序,对于autoconf用户是相当有用的。举例而言,GNU Compiler Collection使用aclocal,即使Makefile是手写的。

    就像autoconf,automake并非完全向下兼容的。举例而言,使用automake 1.4的项目可能不能使用automake 1.9。

    方法[编辑]

    Automake目标是让用户透过高级语言来写makefile,而不是透过纯手工的方式来写整个makefile。在简单的情况下,它能提供:

    • 源文件的列表
    • 传给编译器的命令行选项列表(比如头文件置于哪个路径)
    • 传给链接器的命令行选项列表(程序需要哪些程序库以及它们的路径)

    经由这些资讯,Automake产生makefile能够让用户:

    • 编译程序
    • clean(清除,删除编译过程中所产生的文件)
    • 将程序安装于标准路径
    • 将程序反安装(从安装的地方移除)
    • create a source distribution archive (commonly called a tarball)
    • test that this archive is self-sufficient, and in particular that the program can be compiled in a directory other than the one where the sources are deployed

    依存性资讯的产生[编辑]

    Automake能够自动生成依存性的资讯,因此,当一个源文件被修改,下次调用make命令的时候就会知道哪些源文件需要重新编译。如果编译器允许,Automake会试着让依存性系统保持动态:无论何时源文件被编译,都会要求编译器重新产生依存性列表更新该文件的依存性。换句话说,依存性追踪是编译过程的一种边际效应。

    这企图避免一些静态依存性系统的问题,比如依存性只会在程序员开始项目时才会被侦测到。在这种情况下,如果源文件获得一个新的依存性(例如,如果程序员增加了一个新的#include指令在C语言的源文件),这样在真实的依存性和编译系统所使用的依存性之间就会产生差异。程序员应该重新产生依存性,但很有可能忘了那样做。在一般情况下,automake透过随附的depcomp脚本生成依存性,这会适当的调用编译器或是回到makedepend。如果gcc编译器的版本够新的话,automake将会inline依存性生成码,直接调用gcc。

    Libtool[编辑]

    Automake还可用来辅助库的编译,它可以自动生成调用Libtool的Makefile文件,从而使程序员避免了直接调用Libtool,而项目也可以从此可移植的库生成工具获益。

    参见[编辑]

    参考资料[编辑]

    • Gary V. Vaughan, Ben Elliston, Tom Tromey: Gnu Autoconf, Automake, and Libtool, Sams, ISBN 1-57870-190-2
    1. ^ Jim Meyering. automake-1.16.5 released [stable]. [2021-10-03]. (原始内容存档于2021-10-04). 

    外部链接[编辑]

    教材[编辑]