automake autoconfig 编译project
----------------------------------------
编辑文件:
----------------------------------------
helloworld.c
configure.ac
Makefile.am
----------------------------------------
创建过程:
----------------------------------------
aclocal; autocconf; automake --add-missing; ./configure ; make
----------------------------------------
下面给出helloworld 的例子
----------------------------------------
1. $cat helloworld.c
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2. configure.ac 的编写
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
autoscan ; cp configure.scan configure.ac ; vim configure.ac
configure.ac 主要是定义一些宏
其中AC_INIT_AUTOMAKE是需要手动添加的
$cat configure.ac
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([main.c])
AM_INIT_AUTOMAKE
#AC_CONFIG_HEADERS([config.h])
# 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_CONFIG_FILES([Makefile])
AC_OUTPUT
其中AM_INIT_AUTOMAKE, AC_CONFIG_FILES([Makefile])是手工添加的, 意思是configure 配置中要生成Makefile
2. aclocal
aclocal; 是一个perl脚本, 以configure.ac 为输入,生成aclocal.m4 及autom4te.cache 目录
3. autoconf
autoconf 是一个shell脚本, 它以configure.ac为输入, 输出configre 脚本文件.
4. 编辑Makefile.am
cat Makefile.am
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=main.c
5. 运行automake --addmissing 添加一些必要的软链接
6. 运行./configure 生成Makefile
7. 执行make 生成执行文件