automake大杂烩

从网上多篇文章综合而来:

(一)完整的从头开始生成:

1.进入源码目录,执行autoscan,得到configure.scan文件。对此文件进行修改,然后改名为configure.ac。修改后的configure.scan文件如下:

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

AC_PREREQ(2.61)



# 修改模块名,版本号,bug report为自己所需的内容
AC_INIT(am_test, 1.0, none)



# !!!手工添加此句以支持automake
AM_INIT_AUTOMAKE(am_test, 1.0)



# 一个有效的源代码文件。无需改动
AC_CONFIG_SRCDIR([src/t1.h])
AC_CONFIG_HEADER([config.h])



# Checks for programs.

# 检测g++编译器。如果代码中有c++代码scan时会自动添加
AC_PROG_CXX



# 检测gcc编译器。如果代码中有c代码scan时会自动添加
AC_PROG_CC



# Checks for libraries.

# 检测pthread库是否存在

# AC_CHECK_LIB(库名称,需要库中的函数,[如果找到,[如果没找到]])
AC_CHECK_LIB(pthread, pthread_create, HAVE_PTHREAD=yes,HAVE_PTHREAD=no)
if test "$HAVE_PTHREAD" = "no"; then
AC_MSG_ERROR([pthread is required])
fi
PTHREAD_LIBS=-lpthread

# AC_SUBST 定义的变量可以在Makefile.am中使用
AC_SUBST(PTHREAD_LIBS)



# 检测使用pkg-config管理的库是否存在

# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [action-if-found], [action-if-not-fount])

# 使用检测png库作为例子

PNG_VER=0.2
PKG_CHECK_MODULES(PNG, libpng >= $PNG_VER, HAVE_PNG=yes, HAVE_PNG=no)
AC_SUBST(PNG_LIBS)
AC_SUBST(PNG_CFLAGS)
if test "$HAVE_PNG" = "no"; then
AC_MSG_ERROR([png = $PNG_VER is required])
fi



# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.



# Config file name
AC_CONFIG_FILES(Makefile)



AC_OUTPUT

2.运行aclocal -> 处理本地宏定义

3.autoconf -> 生成configure文件

4.autoheader -> 生成config.h.in文件

5.创建Makefile.am文件。automake会根据此文件生成Makefile.in文件

# 要生成的可执行文件名

bin_PROGRAMS= am_exe



# 生成此文件所需要的源文件
am_exe_SOURCES= src/main.c \
src/t1.c \
src/t2.cpp \
src/tt.c



# 要额外链接的静态库

am_exe_LDADD=



# 要额外链接的动态库。PTHREAD_LIBS, PNG_LIBS在configure.ac中使用AC_SUBST()指定
am_exe_LDFLAGS=$(PTHREAD_LIBS) $(PNG_LIBS)



# 传给gcc的编译标志
am_exe_CFLAGS=$(PNG_CFLAGS)



# 传给g++的编译标志
am_exe_CXXFLAGS=$(PNG_CFLAGS)

6.touch README NEWS AUTHORS ChangeLog 创建gnu标准的文件。如果不加这些文件就要在Makefile.am最后增加:AUTOMAKE_OPTIONS=foreign


7.automake --add-missing --copy 根据Makefile.am 生成Makefile.in文件

8.运行configure文件根据Makefile.in生成实际的Makefile

9.编写autogen.sh,然后chmod a+x autogen.sh

aclocal
autoheader
#libtoolize --force #如果使用libtool
automake --add-missing --copy
autoconf

(二)新加代码文件:

修改Makefile.am,然后执行autogen.sh

(三)新加库引用:

修改configure.ac,增加库的检测

执行autogen.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值