automake教程_autowake怎么设置

automake教程_autowake怎么设置一. 确认你的系统安装有GNU的如下软件:1. automake2. autoconf3. m44. perl5. 如果你需要产生共享库(shared library)则还需要GNU Libtool二. 用automake生成Makefile的步骤如下:1. 由源文件通过autoscan命令生成co

一. 确认你的系统安装有GNU的如下软件:

1. automake
2. autoconf
3. m4
4. perl
5. 如果你需要产生共享库(shared library)则还需要GNU Libtool

二. 用automake生成Makefile的步骤如下:

1. 由源文件通过autoscan命令生成configure.scan,然后修改configure.scan并重命名为configure.in
2. 由aclocal命令生成aclocal.m4
3. 由autoconf命令生成configure
4. 编辑一个Makefile.am(基本是一系列make的宏定义,偶尔也会出现make规则),由automake命令生成Makefile.in
5. 执行./configure生成Makefile

三. automake支持三种目录层次:flat、shallow和deep。

* flat包指的是所有文件都在一个目录中的包。为这类包提供的Makefile.am不需要SUBDIRS这个宏。所有源文件及自己写的头文件都位于当前目录里面,没有子目录。
* deep包指的是所有的源代码都被储存在子目录中的包,顶层目录主要包含配置信息。deep包的顶层Makefile.am将包括宏SUBDIRS,但没有其它定义需要创建的对象的宏。所有源文件及自己写的头文件都位于当前目录的一个子目录里面,而当前目录里没有任何源文件。
* shallow包指的是主要的源代码储存在顶层目录中,而各个部分(典型的是库)则储存在子目录中的包。主要源文件在当前目录里,而其它一些实现各部分功能的源文件各自位于不同目录。

四. 下面以一个例子说明shallow层次结构的源文件如何自动生成Makefile文件。

例子源程序结构如下:
hello是我们的工作目录,hello目录下有main.c和comm、tools、db、network、interface等五个目录。 comm目录下有comm.c和comm.h,tools目录下有tools.c和tools.h,同样其它目录分别有db.c、db.h、network.c、network.h、interface.c、interface.h。

按照如下步骤来自动生成Makefile:
1. autoscan
生成configure.scan文件

2. mv configure.scan configure.in,并编辑它成下面这样:
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.61)
#AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_INIT(hello.c, 1.0)
AM_INIT_AUTOMAKE(hello, 1.0)
#AC_CONFIG_SRCDIR([hello.c])
#AC_CONFIG_HEADER([config.h])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT(Makefile)

configure.in文件内容是一系列GNU m4 的宏,这些宏经autoconf处理后会变成检查系统特性的shell scripts。configure.in内宏的顺序并没有特别的规定,但每一个configure.in文件必須在所有宏前加入AC_INIT宏,然后在所有宏的最后加上AC_OUTPUT宏。可先用autoscan扫描原始文件以产生一个 configure.scan 文件,再对 configure.scan 做些修改成 configure.in 文件。

3. aclocal
生成aclocal.m4文件

4. autoconf
生成可执行的configure文件

5. 编辑一个Makefile.am文件,内容如下:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=main.c comm/comm.c comm/comm.h tools/tools.c tools/tools.h db/db.c db/db.h network/network.c network/network.h interface/interface.c interface/interface.h
# 如果定义多个执行文件,则对每个执行程序都要定义相对的filename_SOURCES
这样最后将利用上述hello_SOURCES源文件生成hello程序。

6. automake –add-missing
生成Makefile.in

7. ./configure
生成Makefile
make
make install
make clean
make distclean (连Makefile也清掉)
make dist (创建一个名为PACKAGE-VERSION.tar.gz的发行版)

图解:

automake教程_autowake怎么设置

 

 

 

文章摘自:   http://hi.baidu.com/red_woods/item/951544e6cb24aed3ea34c94f

其他资源:   http://www.cnblogs.com/ericdream/archive/2011/12/09/2282359.html

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

 

Automake:  https://www.gnu.org/software/automake/

 

今天的文章automake教程_autowake怎么设置分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/47884.html

(0)
编程小号编程小号
上一篇 2023-09-04
下一篇 2023-09-04

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注