生成Makefile的进程
生成Makefile的过程转自:?http://www.ibm.com/developerworks/cn/linux/l-makefile/??首先进入 project 目
生成Makefile的过程
转自:?http://www.ibm.com/developerworks/cn/linux/l-makefile/?
?
首先进入 project 目录,在该目录下运行一系列命令,创建和修改几个文件,就可以生成符合该平台的Makefile文件,操作过程如下:
在项目根目录下新建Makefile.am并正确书写。运行autoscan命令。生成文件configure.scan。将configure.scan 文件重命名为configure.in,并修改configure.in文件在project目录下新建NEWS README ChangeLog AUTHORS文件将/usr/share/automake-1.X/目录下的depcomp和complie文件拷贝到本目录下?运行aclocal命令。生成文件aclocal.m4(注意:如果没有生成aclocal.m4文件,说明文件configure.in的语法可能有错)。?运行autoconf命令。根据文件configure.in生成文件configure。运行autoheader命令。运行automake -ac命令。根据文件Makefile.am生成Makefile.in。?运行./confiugre脚本。根据文件Makefile.in生成Makefile。
PS:
? ? configure.in?档的内容是一连串?GNU?m4?的巨集,这些巨集经过?
???
????autoconf?处理後会变成检查系统特徵的?shell?script。configure.in?内?
???
????巨集的顺序并没有特别的规定,但是每一个?configure.in?档必须在所有?
???
????巨集前加入?AC_INIT?巨集,然後在所有巨集的最後面加上?AC_OUTPUT?巨?
???
????集。我们可先用?autoscan?扫描原始档以产生一个?configure.scan?档,?
???
????再对?configure.scan?做些修改成?configure.in?档。在范例中所用到的?
???
????巨集如下:??
?
???
????dnl??
???
??????????????这个巨集後面的字不会被处理,可视为注解。??
???
????AC_INIT(FILE)??
???
??????????????这个巨集用来检查原始码所在的路径,autoscan?会自动产生,我们?
???
??????????????不必修改它。??
???
????AM_INIT_AUTOMAKE(PACKAGE,VERSION)??
???
??????????????这是使用?Automake?所必备的巨集,PACKAGE?是我们所要产生软体套?
???
??????????????件的名称,VERSION?是版本编号。??
???
????AC_PROG_CC??
???
??????????????检查系统可用的?C?编译器,如果原始程序是用?C?写的就需要这个巨?
???
??????????????集。??
???
????AC_OUTPUT(FILE)??
???
??????????????设定?configure?所要产生的档案,如果是?Makefile?的话,?
???
??????????????configure?便会把它检查出来的结果带入?Makefile.in?档然後产生?
???
??????????????合适的?Makefile。 ?
?