automake使⽤流程总结
automake与cmake 都是产⽣makefile⽂件的⼯具。cmake产⽣的晚,解决了很多autotools⼯具的问题。
autotools是⼀个⼯具集,具有强⼤的灵活性,但是因为步骤太多,配置繁琐,产⽣了很多的替代⽅案,cmake是其中最优秀的之⼀。当然很多其他替代品不会产⽣makefile⽂件⽽直接具有make的功能了。
cmake相⽐autotool确实好⽤,包括KDE在内的很多⼤型项⽬也都在使⽤cmake。不过autotools的使⽤率仍旧⽐cmake要⾼。
Makefile的基本结构不是很复杂,但当⼀个程序开发⼈员开始写Makefile时,经常会怀疑⾃⼰写的是否符合惯例,⽽且⾃⼰写的Makefile经常和⾃⼰的开发环境相关联,当系统环境变量或路径发⽣了变化后,Makefile可能还要跟着修改.这样就造成了⼿⼯书写Makefile的诸多问
题,automake恰好能很好地帮助我们解决这些问题.
automake⽣成Makefile的步骤:
(1)创建源代码⽂件,使⽤”autoscan”⽣成configure.scan⽂件,将其重命名为configure.ac(或configure.in),并做适当修改(2)⽤”aclocal”命令⽣成aclocal.m4⽂件
(3)⽤”autoconf”命令由configure.ac和aclocal.m4⽂件⽣成configure⽂件。
(4)⼿⼯编辑或由系统给定acconfig.h⽂件,使⽤”autoheader”命令⽣成config.h.in⽂件,使程序可移植
(5)⼿⼯编辑Makefile.am⽂件,使⽤”automake --add-missing”命令⽣成configure.in⽂件。
(6)使⽤”configure”命令由configure、configure.in和config.h.in⽂件⽣成Makefile⽂件。
Autoscan会在给定⽬录及其⼦⽬录树中检查源⽂件,扫描源代码以搜寻普通的可移植性问题,⽐如检查编译器,库,头⽂件等。
aclocal:根据已经安装的宏,⽤户定义宏和acinclude.m4⽂件中的宏将configure.ac⽂件所需要的宏集中定义到⽂件 aclocal.m4中。
--add-missing的定义是“add missing standard files to package”,它会让automake加⼊⼀个标准的软件包所必须的⼀些⽂件。
configure 是个shell脚本。
这样符合⾃由软件惯例的Makefile就⽣成好了,看⼀下当前⽬录发现已经这么多⽂件了!如果想清理⼀下怎么办呢?其实Automake早为我们想好了,它⽣成的Makefile功能很多:
+ make:编译源代码,⽣成⽬标⽂件
+ make clean:清除产⽣的object⽂件(后缀为“.o”的⽂件)及可执⾏⽂件
+ make install:将编译好的可执⾏⽂件安装到系统⽬录,⼀般为/usr/local/bin
+ make dist:⽣成软件发布包(distribution package),将可执⾏⽂件及相关⽂件打包成””。其中PACKAGE和VERSION可以在configure.in中通过AM_INIT_AUTOMAKE(PACKAGE, VERSION)定义。
+ make distcheck:查看发布包是否正确,解压并执⾏./configure和make来确认 ,来确认编译不出现错误,最后提⽰你软件包已经准备好,可以发布了。
+ make distclean:类似make clean,但同时也将configure⽣成的⽂件全部删除掉,包括Makefile。
⼤家可以看到configure.in内容是⼀些宏定义,这些宏经autoconf处理后会变成检查系统特性、环境变量、软件必须的参数的shell脚本。configure.in⽂件中的宏的顺序并没有规定,但是你必须在所有宏的最前⾯和最后⾯分别加上AC_INIT宏和AC_OUTPUT宏。
  autoconf 是⽤来⽣成⾃动配置软件源代码脚本(configure)的⼯具。configure脚本能独⽴于autoconf运⾏,且在运⾏的过程中,不需要⽤户的⼲预。
  要⽣成configure⽂件,你必须告诉autoconf如何到你所⽤的宏。⽅式是使⽤aclocal程序来⽣成你的aclocal.m4。
  aclocal根据configure.in⽂件的内容,⾃动⽣成aclocal.m4⽂件。aclocal是⼀个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”。
  autoconf从configure.in这个列举编译软件时所需要各种参数的模板⽂件中创建configure。
  autoconf需要GNU m4宏处理器来处理aclocal.m4,⽣成configure脚本。
cmake如何使用  m4是⼀个宏处理器。将输⼊拷贝到输出,同时将宏展开。宏可以是内嵌的,也可以是⽤户定义的。除了可以展开宏,m4还有⼀些内建的函数,⽤来引⽤⽂件,执⾏命令,整数运算,⽂本操作,循环等。m4既可以作为编译器的前端,也可以单独作为⼀个宏处理器.
configure是⼀个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产⽣合适的Makefile,从⽽可以使你的源代码能在不同的操作系统平台上被编译出来。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。