autotools

官网:www.gnu.org/software/autoconf makefile可以很好的帮我们管理工程,但是大型的工程很难编写makefile,用autotools通过config的方式来帮助生成makfile文件,makfile看文章:

https://blog.csdn.net/weixin_44705391/article/details/122730294


需要依赖的环境:m4(宏处理工具),perl(脚本语言库)(自行安装即可)

autotools流程:
扫描->宏展开->生成config->(生成config head文件)->makefile

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//由以下步骤可得到configure:[]中的内容是可有可无的
source files-->[autoscan*]-->[configure.scan]-->configure.ac			//或者configure.in

configure.ac--.
			  |	  .------->autoconf*---->configure
[aclocal.m4]--+---+														//aclocal.m4文件由以下步骤生成
			  |	  `----->[autoheader*]-->[config.h.in]	
[acsite.m4]---'			

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//由以下两个步骤可得到aclocal.m4和Makefile.in作为生产configure.ac和makefile的原料
[acinclude.m4]--.
				|
[local macros]--+-->aclocal*-->aclocal.m4
				|
configure.ac----'

configure.ac--.
			  +-->automake*-->Makefile.in
Makefile.am---'				//此文件是自己写的	

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Makefile.in通过运行configure脚本生成makefile
					.-------->[config.cache]
configure*----------+-------->config.log
					|
[config.h.in]-.		v			 .->[config.h]-.
			  +-->config.status*-+			   +-->make*
Makefile.in---'					 '->Makefile---'
//文件加工过程
source files----->configure.ac-->configure--.
		      |-->[aclocal.m4]-------^	    |-->Makefile
		      '--> Makefile.in -------------'
命令描述生成文件
autoscan扫描源代码目录生成configure.scan文件configure.scan包含系统配置的基本选项,里面都是宏定义,需要将其改为configure.in
aclocal是一个perl脚本程序,aclocal根据configure.in的内容生成aclocal.m4。aclocal.m4是宏展开文件
autoconf用来产生configure文件configure.in的宏经过autoconf处理后变成检查系统特性、环境变量、软件必须的参数的shell脚本
autoheader自动生成config.h.inconfig.h.in用于生成config.h
automakeautomake-add-missing 来产生makefile.inmakefile.am用于生成makefile.in,需要手写

一个典型的工作过程:
注意不能放在VM Ware的共享目录中,不然链接的时候会报错
1)autoscan:
生成文件:
autoscan.log configure.scan
autoscan.log是日志文件我们不关心
configure.scan包含一些宏,其中的有些内容需要我们修改:

AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.
AC_CHECK_HEADERS([stdlib.h])

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT

1.以上的AC_INIT没有配置,需要加上最终可执行程序的名字,修改形如:

AC_INIT(be_rich,1.0,qwertyuiop@mail.com)

2.我们可以不要config.h,那么先将AC_CONFIG_HEADERS([config.h])屏蔽掉

3.AC_OUTPUT最终生成makefile文件:

AC_OUTPUT(Makefile)

4.添加一个宏:AM_INIT_AUTOMAKE,,表示我们用automake来生成文件:

AM_INIT_AUTOMAKE(be_rich,1.0)

我们可以在https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/autoconf.html文档中查找有关的宏,学习宏的用法

2)将configure.scan改成configure.ac

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

4)执行autoconf生成configure

5)创建Makefile.am文件
其内容可以参考:https://www.gnu.org/software/automake/manual/automake.html的4.1
也可以man automake来学习automake
参考4.1的内容:

bin_PROGRAMS = zardoz									//我们要命名的程序
zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c	//源码
zardoz_LDADD = $(LIBOBJS)								//库路径

info_TEXINFOS = zardoz.texi

我们编辑Makefile.am内容为:

bin_PROGRAMS = be_rich
be_rich_SOURCES = main.c

6)新建NEWS、README、AUTHORS、ChangeLog文件
为了automake的规范,在工程中添加这些共文件

6)执行automake --add-missing

8)执行./configure得到Makefile

9)执行make、make install、make dist等命令
执行make dist会生成一个压缩包,这个压缩包就可以放到网络上供人下载使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值