`
mypyg
  • 浏览: 549650 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

    automake,autoconf编译大型项目例子

    在软件开发过程中,尤其是开源项目,automake和autoconf是两个非常重要的工具,它们帮助开发者在不同的操作系统和编译环境中创建可移植的Makefile。在这个"automake,autoconf编译大型项目例子"中,我们将深入理解这...

    automake-1.16.1.tar.xz

    `automake-1.16.1.tar.xz` 是一个包含 `automake-1.16.1` 版本源代码的压缩文件。...在开发和维护开源软件时,automake是一个非常有用的工具,它可以极大地简化编译和打包过程,节省开发者的时间和精力。

    automake-1.15.1.tar.gz

    automake-1.15.1的使用,极大地简化了hi3861开发环境中的构建流程,让开发者能更专注于代码编写,而不是构建细节。同时,由于automake遵循严格的编码规范,使得项目更容易被其他开发者理解和维护。因此,在hi3861...

    automake-1.16.tar.gz

    `automake-1.16.tar.gz` 是一个包含了 `automake` 工具的源代码包,主要用于自动化构建过程中的Makefile生成。在Linux和类Unix系统中...理解并熟练使用automake,能够极大地提高开发效率,保证软件的可移植性和一致性。

    GNU-Automake-中文.pdf

    GNU Automake 是一个自动化工具,主要用于生成符合GNU Makefile标准的`Makefile.in`文件,这些文件随后会被`configure`脚本转化为适用于不同平台的`Makefile`。Automake简化了构建过程,允许开发者专注于编写源代码...

    ubuntu20.04离线dpkg安装automake

    ubuntu20.04离线dpkg安装automake

    Automake官方PPT教程

    **Automake官方PPT教程详解** Automake是GNU项目中的一部分,它是一个自动化工具,用于构建遵循GNU标准软件构建系统的项目。这个官方教程是学习Automake的宝贵资源,特别是对于那些刚接触开源项目构建的新手而言。...

    automake.pdf

    **Automake** 是一个强大的工具,可以极大地简化 Makefile 的管理和维护过程,尤其适用于遵循 GNU 构建标准的开源项目。通过使用 Automake,开发者可以专注于软件的功能开发,而无需过多关注构建过程的细节。...

    automake和autoconf测试代码

    `automake` 和 `autoconf` 是两个这样的工具,它们使得源代码能够跨平台编译并配置,为开发者提供了极大的便利。这两个工具主要在Unix-like系统(如Linux和macOS)上广泛使用,但在Windows环境下也可以通过 Cygwin ...

    automake制作Makefile的模板

    `automake` 是一个广泛使用的开源工具,主要用于创建遵循 GNU 编译标准的 Makefile 文件。这个模板提供了使用 `automake` 创建自定义 Makefile 的基础结构,使开发者能够快速适应并应用于自己的项目。 `automake` ...

    automake-1.8.tar.gz

    《automake-1.8在Ubuntu中的应用与详解》 automake是一款自动化工具,它为Unix-like操作系统提供了创建源代码Makefile.in文件的框架。automake是GNU项目的一部分,广泛应用于开源软件的构建过程,特别是在Linux系统...

    automake的文档

    通过使用`Makefile.am`模板文件,Automake极大地简化了构建过程,并确保项目遵循一致且标准化的构建流程。此文档为Automake版本1.11.1(2009年12月8日发布),由David MacKenzie、Tom Tromey和Alexandre Duret-Lutz...

    linux_automake使用实例

    依次执行命令: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.tar.gz"是一个开源自动化构建系统Automake的源码包,版本为1.16.1。Automake是GNU项目的一部分,主要用于简化Unix/Linux环境中...这些工具极大地提高了开发效率,降低了构建复杂软件的难度。

    automake1.13

    `automake` 是一个自动化构建系统,用于生成符合GNU标准的Makefile.in文件,这些文件是编译和安装软件包的基础。在Linux和类UNIX操作系统中,`automake` 是开发者常用的工具,它与`autoconf` 配合使用,帮助创建可...

    automake-1.14.1.tar.gz

    标题中的"automake-1.14.1.tar.gz"是一个开源软件构建工具Automake的源码包,版本为1.14.1。Automake是GNU项目的一部分,主要用于自动化Unix/Linux系统上的软件构建过程,它能够生成Makefile.in文件,这些文件在...

    automake和autoconf英文手册

    **automake和autoconf简介** automake和autoconf是开源软件开发中广泛使用的工具,主要用于构建源代码包,确保它们可以在不同的操作系统和编译环境中正确编译和安装。这两个工具是GNU项目的一部分,旨在帮助开发者...

    automake使用-项目

    `automake`就是这样一款工具,它主要用于Unix/Linux环境下的软件构建过程,使得源代码管理、编译和安装等步骤自动化。本项目将详细介绍如何使用`automake`来生成多个执行程序。 `automake`是GNU项目的一部分,它与`...

    automake 自动生成makefile

    automake 是linux下的自动生成makefile的工具。需要配合auroconf使用 版本:automake-1.9.6.tar.tar

Global site tag (gtag.js) - Google Analytics