C程序自动构建工具

参考网上的文章,试了一下程序自动构建工具,目的是要编译一个动态库/静态库。

测试环境:

ubuntu 12.04 X86-64 

autoscan (GNU Autoconf) 2.68

autoheader (GNU Autoconf) 2.68

autoconf (GNU Autoconf) 2.68

aclocal (GNU automake) 1.11.3

automake (GNU automake) 1.11.3

libtoolize (GNU libtool) 2.4.2


1. 新建一个工程,目录结构如下(这些文件是要自己动手编写的,Makefile.am后面会有例子;AUTHORS/ChangeLog/NEWS/README是几个标准文件,内容可以留空):

project

├── AUTHORS
├── ChangeLog
├── Makefile.am
├── NEWS
├── README
└── src
    ├── cpuinfo.c
    ├── cpuinfo.h
    └── Makefile.am

2.安装自动构建工具(某些工具是安装ubuntu的时候就已经自动安装上的)

sudo apt-get install autoconf automake libtool make gcc


3. 编写Makefile.am

Makefile.am

AUTOMAKE_OPTIONS=foreign
SUBDIRS=src 

src/Makefile.am
AUTOMAKE_OPTIONS=foreign
lib_LTLIBRARIES=libcpuinfo.la
libcpuinfo_la_SOURCES=cpuinfo.c
include_HEADERS=cpuinfo.h

Makefile.am一般格式
C程序自动构建工具_第1张图片



4. 在工程目录下执行autoscan,目录下会生成autoscan.log和configure.scan。把configure.scan名称改为configure.ac


5. 修改configure.ac内容,如下:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.68])
AC_INIT([libcpuinfo], [1.0.0], [[email protected]])
AC_CONFIG_SRCDIR([src/cpuinfo.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE

# Checks for programs.
AC_PROG_CC
AC_PROG_LIBTOOL

# Checks for libraries.

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

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT([Makefile
           src/Makefile])


6. 依次执行以下命令:

aclocal

autoheader

libtoolize --automake --copy --force

automake –-add-missing

autoconfig

至此,configure就已经生成了


7. 生成Makefile && 编译

./configure --prefix=$(pwd)/output

make

make install
顺利的话,此时在output目录下就会生成include和lib两个目录,里面包含了头文件cpuinfo.h和两个库libcpuinfo.so/libcpuinfo.a。


configure.ac每个项的意思暂时没搞懂,先用起来,再深入学习。


附参考文章:

http://www.ibm.com/developerworks/cn/linux/l-makefile/index.html

http://www.gnu.org/software/autoconf/manual/autoconf-2.68/html_node/index.html


你可能感兴趣的:(automake,autoconf,自动构建工具,生成Makefile)