目录
在Linux系统中,程序的编译一般通过编写Makefile文件来实现,然而对于大型的工程,Makefile的编写会十分复杂,为此可以借助autotools工具来自动生成Makefile文件。
Makefile自动生成流程
下图为autotools工具自动生成Makefile文件的流程,每一步的具体实现将在下文中详细阐述。
autotools的安装与使用
- autotools工具的安装
sudo apt install automake
- 使用autotools生成Makefile
这里采用如下程序目录结构:
1、autoscan命令:输入autoscan命令后目录中多出两个文件:autoscan.log日志文件和configure.scan扫描文件
2、将configure.scan文件改为configure.ac,并对里面的配置进行四点修改:1)修改AC_INIT函数里面的参数,最后一个是自己的邮箱;2)将AC_CONFIG_SRCDIR里面修改为main.c;3)添加宏AM_INIT_AUTOMAKE;4)在最后AC_OUT后添加输出文件Makefile
configure.scan文件修改前的内容为:
configure.ac文件修改后的内容为:
3、aclocal命令:生成aclocal.m4文件
4、autoheader命令:生成config.h.in文件
5、生成Makefile.in文件:先创建一个Makefile.am文件,文件内容如下所示,然后使用automake --add-missing命令生成Makefile.in文件
注:1)AUTOMAKE_OPTIONS设置成 foreign 会改用一般软件套件标准来检查,默认是 gnu 模式;2)bin_PROGRAMS可指定程序名, bin 表示要被安装到系统中,不想安装到系统中则使用 noinst_PROGRAMS;3)main_SOURCES给出生成可执行程序所需要的所有原文件,main是前面指定的程序名字
6、autoconf命令:生成configure文件
7、./configure命令:生成Makefile文件
上述流程的运行结果如下: