automake使用

下面内容有大部分参考别人的,有小部分有变动:

 多余的话不多说,结合一个简单的例子学习automake的用法。首先创建目录hello然后进入目录:

mkdir hello

cd hello

接下来用自己喜欢的编辑器写一个hello.c文件

#include<stdio.h>

int main()

{

   printf("hello world! ");

   return 0;

}

现在在hello目录下应该有一个自己写的hello.c了,下来生成configure,这里使用autoscan命令来根据目录下的源代码生成一个configure.in的模板文件:

autoscan

将会产生一个文件:configure.scan,可以拿他作为configure.in的蓝本,现在将configure.scan改名为configure.in,并编辑它,按如下内容修改,去掉无关语句:

[root@cent634 automake_test]# cat configure.in
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.63])
AC_INIT(hello, 1.1.0, "xxx@xxx.cn")
#必填项否则会报错
AM_INIT_AUTOMAKE(hello,
1.1.0) AC_CONFIG_SRCDIR([hello.c]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. #必填项 告诉生成出什么东西 AC_OUTPUT(Makefile)

然后执行aclocal和autoconf分别产生aclocal.m4和configure两个文件:

aclocal

autoconf

可以看到configure.in的内容是一些宏定义,这些宏经autoconf处理后会变成检查系统特性、环境变量、软件必须的shell脚本。autoconf是用来生成自动配置软件源代码脚本的工具。要生成configure文件,必须告诉autoconf如何找到所用的宏。方式是使用aclocal程序来生成你的aclocal.m4。下面建立一个Makefile.am文件:

vim Makefile.am

文件内容为:

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS=hello

hello_SOURCES=hello.c

automake会根据所写的Makefile.am来自从生成Makefile.in。下一步将运行automake,命令如下:

automake --add-missing

automake会根据Makefile.am文件产生一些文件,包含最重要的Makefile.in。执行configure生成Makefile,命令如下:

./configure

此时Makefile已经产生了,现在就可以使用Makefile编译代码了,命令为:

make

运行hello:

./hello

这样hello就编译出来了。

原文地址:https://www.cnblogs.com/kuang17/p/7715843.html