automak语法

--------------------纯属个人笔记,防止遗忘--------------------

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

可以通过修改configure.scan来编写自己的configure.ac,用来自动生成configure脚本

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

dnl:注释行

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

AC_OUTPUT:文件结尾必须加上

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

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

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

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

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

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

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

5、执行automake --add-missing

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

转载于:https://my.oschina.net/u/1459779/blog/263016

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值