从网上多篇文章综合而来:
(一)完整的从头开始生成:
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
分享到:
相关推荐
在软件开发过程中,尤其是开源项目,automake和autoconf是两个非常重要的工具,它们帮助开发者在不同的操作系统和编译环境中创建可移植的Makefile。在这个"automake,autoconf编译大型项目例子"中,我们将深入理解这...
`automake-1.16.1.tar.xz` 是一个包含 `automake-1.16.1` 版本源代码的压缩文件。...在开发和维护开源软件时,automake是一个非常有用的工具,它可以极大地简化编译和打包过程,节省开发者的时间和精力。
automake-1.15.1的使用,极大地简化了hi3861开发环境中的构建流程,让开发者能更专注于代码编写,而不是构建细节。同时,由于automake遵循严格的编码规范,使得项目更容易被其他开发者理解和维护。因此,在hi3861...
`automake-1.16.tar.gz` 是一个包含了 `automake` 工具的源代码包,主要用于自动化构建过程中的Makefile生成。在Linux和类Unix系统中...理解并熟练使用automake,能够极大地提高开发效率,保证软件的可移植性和一致性。
GNU Automake 是一个自动化工具,主要用于生成符合GNU Makefile标准的`Makefile.in`文件,这些文件随后会被`configure`脚本转化为适用于不同平台的`Makefile`。Automake简化了构建过程,允许开发者专注于编写源代码...
ubuntu20.04离线dpkg安装automake
**Automake官方PPT教程详解** Automake是GNU项目中的一部分,它是一个自动化工具,用于构建遵循GNU标准软件构建系统的项目。这个官方教程是学习Automake的宝贵资源,特别是对于那些刚接触开源项目构建的新手而言。...
**Automake** 是一个强大的工具,可以极大地简化 Makefile 的管理和维护过程,尤其适用于遵循 GNU 构建标准的开源项目。通过使用 Automake,开发者可以专注于软件的功能开发,而无需过多关注构建过程的细节。...
`automake` 和 `autoconf` 是两个这样的工具,它们使得源代码能够跨平台编译并配置,为开发者提供了极大的便利。这两个工具主要在Unix-like系统(如Linux和macOS)上广泛使用,但在Windows环境下也可以通过 Cygwin ...
`automake` 是一个广泛使用的开源工具,主要用于创建遵循 GNU 编译标准的 Makefile 文件。这个模板提供了使用 `automake` 创建自定义 Makefile 的基础结构,使开发者能够快速适应并应用于自己的项目。 `automake` ...
《automake-1.8在Ubuntu中的应用与详解》 automake是一款自动化工具,它为Unix-like操作系统提供了创建源代码Makefile.in文件的框架。automake是GNU项目的一部分,广泛应用于开源软件的构建过程,特别是在Linux系统...
通过使用`Makefile.am`模板文件,Automake极大地简化了构建过程,并确保项目遵循一致且标准化的构建流程。此文档为Automake版本1.11.1(2009年12月8日发布),由David MacKenzie、Tom Tromey和Alexandre Duret-Lutz...
依次执行命令:aclocal,libtoolize -f -c,autoconf,automake --add-missing,./configure,make。 3、cd */project/swap 依次执行命令:aclocal,autoconf,automake --add-missing,./configure,make。 4、cd *...
标题中的"automake-1.16.1.tar.gz"是一个开源自动化构建系统Automake的源码包,版本为1.16.1。Automake是GNU项目的一部分,主要用于简化Unix/Linux环境中...这些工具极大地提高了开发效率,降低了构建复杂软件的难度。
`automake` 是一个自动化构建系统,用于生成符合GNU标准的Makefile.in文件,这些文件是编译和安装软件包的基础。在Linux和类UNIX操作系统中,`automake` 是开发者常用的工具,它与`autoconf` 配合使用,帮助创建可...
标题中的"automake-1.14.1.tar.gz"是一个开源软件构建工具Automake的源码包,版本为1.14.1。Automake是GNU项目的一部分,主要用于自动化Unix/Linux系统上的软件构建过程,它能够生成Makefile.in文件,这些文件在...
**automake和autoconf简介** automake和autoconf是开源软件开发中广泛使用的工具,主要用于构建源代码包,确保它们可以在不同的操作系统和编译环境中正确编译和安装。这两个工具是GNU项目的一部分,旨在帮助开发者...
`automake`就是这样一款工具,它主要用于Unix/Linux环境下的软件构建过程,使得源代码管理、编译和安装等步骤自动化。本项目将详细介绍如何使用`automake`来生成多个执行程序。 `automake`是GNU项目的一部分,它与`...
automake 是linux下的自动生成makefile的工具。需要配合auroconf使用 版本:automake-1.9.6.tar.tar