您的位置:首页 > 其它

图解autoscan、aclocal、autoheader、automake、autoconf、configure、make

2015-06-30 10:50 253 查看
1.autoscan(autoconf):扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。

yoursourcefiles-->[autoscan*]-->[configure.scan]-->configure.ac
2.aclocal(automake):根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件aclocal.m4中。aclocal是一个perl脚本程序,它的定义是:“aclocal-createaclocal.m4byscanning
configure.ac”
userinputfilesoptionalinputprocessoutputfiles
=================================================

acinclude.m4-----.
V
.-------,
configure.ac------------------------>|aclocal|
{usermacrofiles}->||------>aclocal.m4
`-------'
3.autoheader(autoconf):根据configure.ac中的某些宏,比如cpp宏定义,运行m4,声称config.h.in

userinputfilesoptionalinputprocessoutputfiles
=================================================

aclocal.m4-------.
|
V
.----------,
configure.ac----------------------->|autoheader|---->autoconfig.h.in
`----------'


4.automake:automake将Makefile.am中定义的结构建立Makefile.in,然后configure脚本将生成的Makefile.in文件转换为Makefile。如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOOL,它会调用libtoolize,否则它会自己产生config.guess和config.sub
userinputfilesoptionalinputprocessesoutputfiles
===================================================

.--------,
||--->COPYING
||--->INSTALL
||------>install-sh
||------>missing
|automake|------>mkinstalldirs
configure.ac----------------------->||
Makefile.am----------------------->||------>Makefile.in
||------>stamp-h.in
.---+|--->config.guess
|||--->config.sub
|`------+-'
||---->config.guess
|libtoolize|---->config.sub
||-------->ltmain.sh
||-------->ltconfig
`----------'


5.autoconf:将configure.ac中的宏展开,生成configure脚本。这个过程可能要用到aclocal.m4中定义的宏。
userinputfilesoptionalinputprocessesoutputfiles
===================================================

aclocal.m4,autoconfig.h.in-------.
V
.--------,
configure.ac----------------------->|autoconf|------>configure


6../configure的过程

.------------->[config.cache]
configure*--------------------------+------------->config.log
|
[config.h.in]-.v.-->[autoconfig.h]
+------->config.status*-+
Makefile.in---'`-->Makefile


7.make过程


[autoconfig.h]-.
+-->make*--->程序
Makefile---'


.---------,
config.site--->||
config.cache--->||--->config.cache
|+-,
`-+-------'|
||---->config.status
config.h.in------->|config-|---->config.h
Makefile.in------->|.status|---->Makefile
||---->stamp-h
|+--,
.-+||
|`------+--'|
ltmain.sh------->|ltconfig|------->libtool
|||
`-+------'|
|config.guess|
|config.sub|
`------------'[code].--------,
Makefile------>||
config.h------>||
{projectsources}---------------->||-------->{projecttargets}
.-++--,
|`--------'|
|libtool|
|missing|
|install-sh|
|mkinstalldirs|
`-------------'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: