autotools 使用二

原创 2015年11月17日 16:52:16

产生configure需要三个文件
configure.ac
Makefile.am
src/Makefile.am
(参考我的另外两篇文章编写configure.ac编写Makefile.am
编辑好这几个文件就可以产生configure脚本,和config.h.in,Makefile.in,src/Makefile.in
configure.ac主要初始化一些信息,检查编译器,检查头文件,检查库,检查函数等。
下面是一个configure.ac样本

AC_INIT([amhello], [1.0], [bug-report@address])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT

AC_INIT初始化工程名,版本,bug报告地址一个emall
AM_INIT_AUTOMAKE 初始化automake
AC_PROG_CC检查编译器
AC_CONFIG_HEADERS产生config.h.in
AC_CONFIG_FILES 产生Makefile
AC_OUTPUT 输出这些文件 configure,config.h.in,Makefile

Makefile.am 指定建造目标程序,库还是动态库等
下面看一个例子
根目录下的Makefile.am

SUBDIRS=src

SUBDIRS表示建造路径为src,去到src下寻找Makefile.am
src/Makefile.am

bin_PROGRAMS=hello
hello_SOURCES=main.c

bin_PROGRAMS = hello表示建造一个应用程序hello,bin表示安装路径,PROGRAMS表示建造的是一个程序。
hello_SOURCES=main.c表示建造hello需要的源文件。

有两这些文件你输入下面的命令将会产生configure,config.h.in等文件
autoreconf –install

注意autoreconf其实会为你以一种正确的顺序去启动一系列的工具。
具体这些过程和用到的工具见下文
这里写图片描述

工具 描述
autoconf 从configure.ac创建configure
autoheader 从configure.ac创建config.h.in
autoreconf 以正确的顺序运行全部命令
autoscan 搜索源代码中的移植问题,最终configure.ac中没提及的宏
autoupdate 跟新configure.ac中废弃的宏
ifnames 收集源代码中的#if/#ifdef/…并且标示定义
autom4te autoconf的核心,它驱动M4通过下面的工具实现功能。
automake 从Makefile.am和configure.ac创建Makefile.in文件
aclocal 扫描configure.ac中的第三方宏,并且标示定义到aclocal.m4中

大多数时候不需要记住这些复杂的命令,只需要执行autoreconf –install就可以了。

configure相关的产生关系图

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
资料来源
autotools.pdf

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux下autoTools工具集使用介绍

Author : iStone E-mail : liul.stone@gmail.com Date : 2015-09-19 15:16:38 一 使用autoTools工具集 1.1 什么是...
  • stone548534
  • stone548534
  • 2015年10月13日 10:28
  • 1673

Autotools的基本使用步骤

先按照一个简单的步骤实现一个automake的helloworld例子: 1, 创建一个实验路径 mkdir amhelloworld &&  cd amhelloworld 2, 创建一个src...
  • wuzh1230
  • wuzh1230
  • 2013年04月19日 14:37
  • 1267

如何使用autotools工具

autotools是系列工具,读者首先要确认系统是否装了以下工具(可以用which命令进行查看)。 autoscanaclocalautoheaderautomakeautoconf 使用aut...
  • SUKHOI27SMK
  • SUKHOI27SMK
  • 2013年03月29日 10:21
  • 705

学习工具篇 - eclipse 中使用autotools plugins

很多时候我们都是在使用IDE来构建自己的小项目,使用IDE,在学习中足够了。 但是渐渐的发现使用IDE已经满足不了自己了,发现自己处于两难的境地。为什么这么说呢?      首...
  • imxiangzi
  • imxiangzi
  • 2015年10月05日 11:34
  • 800

Linux下autotools的使用

由于某些原因(持续集成:travis-ci+github),尝试给项目写个Makefile。整个项目最初在windows下编写,make这些工作都由VS做了。但travis-ci给c++提供的环境是l...
  • zxc024000
  • zxc024000
  • 2017年02月16日 16:27
  • 670

Autotools使用详细解读[转载]

关于Autotools的使用 我们前面的章节中已经讲到了Makefile的使用(点击进入查看文章)。我们知道在Linux下面如果编译一个比较大型的项目,我们可以通过Makefile的...
  • zhengqijun_
  • zhengqijun_
  • 2017年04月11日 19:12
  • 535

Autotools使用一

autotools基础一般在linux上编译一个工程需要先调用./configure,大部分linux开源项目都使用autotools编译架构,都会有configure这个脚本。通过在执行./conf...
  • john_crash
  • john_crash
  • 2015年11月17日 15:30
  • 678

使用Autotools构建C++项目

autotools 构建 C++项目 autotools 构建 C项目 cmake 关于构建C++项目 autotools和CMake的却别 autotools的使用步骤 autotools + ec...
  • xlxxcc
  • xlxxcc
  • 2016年04月10日 14:38
  • 1128

在Ubuntu下使用autotools生成Makefile

相信在Linux环境下做过项目的人,都会知道Makefile的重要性。它能够帮助我们完成很多的编译工作,节约我们自己去编译的时间。Makefile的重要性这里就不在强调了!Windows下的IDE都自...
  • zhengqijun_
  • zhengqijun_
  • 2017年04月10日 18:55
  • 643

Makefile文件编写和autotools的使用

在Linux或Unix环境下,对于只含有几个源代码文件的小程序(如hello.c)的编译,可以手工键入gcc命令对源代码文件逐个进行编译;然而在大型的项目开发中,可能涉及几十到几百个源文件,采用手工键...
  • sbsujjbcy
  • sbsujjbcy
  • 2015年04月02日 20:20
  • 1530
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:autotools 使用二
举报原因:
原因补充:

(最多只允许输入30个字)