automak语法

--------------------纯属我的笔记,防止遗忘--------------------
shell

autoscan 扫描原始文件以产生一个 configure.scan 文件spa

能够经过修改configure.scan来编写本身的configure.ac,用来自动生成configure脚本ip

--------------------如下是GUN m4,即configure.in中使用的宏的语法:开发

dnl:注释行编译器

AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]):该宏用来检查源代码所在路径,必須在全部宏前加入 AC_INIT 宏编译

AC_OUTPUT:文件结尾必须加上test

AC_PROG_CC:检查系统可用的C编译器,若源代码是用C写的就须要这个宏
软件

AM_INIT_AUTOMAKE([foreign -Wall -Werror]):用来初始化automake的参数,定义编译选项------必须file

AC_CONFIG_FILES([Makefile]):用来从Makefile.in生成Makefile,Makefile.in是automake根据Makefile.ac生成------必须语法

实际上,这里使用 Automake 时,还须要一些其余的宏,这些额外的宏咱们用 aclocal来帮助产生。執行 aclocal会产生aclocal.m4 文件,若是无特别的用途,能够不须要修改它,用 aclocal 所产生的宏会告诉 Automake如何动做。  

-------------------如下是Makefile.am的语法,Makefile.am是configure脚本用来产生Makefile.in的宏文件:

AUTOMAKE_OPTIONS  :设置 automake 的选项。Automake 主要是帮助开发 GNU 软件的人员来维护软件,因此在执行 automake 时,会检查目录下是否存在标准 GNU 软件中应具有的文件,例如 'NEWS'、'AUTHOR'、'ChangeLog' 等文件。设置 foreign 时,automake 会改用通常软件的标准来检查。

bin_PROGRAMS :定义要产生的执行文件名。若是要产生多个执行文件,每一个文件名用空白符隔开。  

hello_SOURCES:定义 'hello' 这个执行程序所须要的原始文件。若是 'hello'这个程序是由多个原始文件所产生,必須把它所用到的全部原始文件都列出来,以空白符隔开。假设 'hello' 还须要 'hello.c'、'main.c'、'hello.h' 三个文件的话,则定义:hello_SOURCES= hello.c main.c hello.h 。若是定义多个执行文件,则对每一个执行程序都要定义相对的filename_SOURCES。  

编辑好 Makefile.am 文件,就能够用 automake --add-missing来产生 Makefile.in。加上 --add-missing 选项来告诉 automake顺便假如包装一个软件所必须的文件。Automake产生生出來的 Makefile.in 文件是彻底符合 GNU Makefile 的惯例,只要执行 configure这个shell script 即可以产生合适的 Makefile 文件了。

-------------------下面是一个简单项目的过程:

项目只有简单的一个文件:test.c

一、首先执行autoscan自动生成configure.scan文件

二、修改configure.scan文件,生成configure.ac文件,注意 AM_INIT_AUTOMAKE 和 AC_CONFIG_FILES必须有

三、执行aclocal生成aclocal.m4文件

四、编写Makefile.am和config.h.in文件

五、执行automake --add-missing

六、执行autoconf生成configure脚本,到此大功告成

相关文章
相关标签/搜索