精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 软件开发>>使用auto工具自动生成Makefile文件实列

主题:使用auto工具自动生成Makefile文件实列
发信人: elton_99()
整理人: zelor(2002-05-24 10:42:04), 站内信件
中文Unix论坛技术资料
Copyright www.unixaid.net 2001/10/15
任何网站或者传统媒体转载,必须得到我们的授权!!!
否则我们保留追究相关法律责任的权利!!!
作者: 斯汀 ([email protected])
本 ([email protected])

使用auto工具自动生成Makefile文件实列
=========================================

    Autoconf上可以自动生成一个shell脚本,利用他你可在不同的unix下自动生成特定的Makefile文件,而且这个脚本可以脱离autoconf来运行。生成的这个脚本名字叫configure,执行他后,你回得到以下几个文件:

· 在每个子目录下生成一个 `Makefile' 
· 作为一个可选项,还可能生成一个 C header文件,包含 #define directives 
· 一个 `config.status' 文件,
· shell script :config.cache' 
· `config.log'

目录结构:
.
|-- Makefile
|-- Makefile.am
|-- Makefile.in
|-- README
|-- aclocal.m4
|-- config.cache
|-- config.log
|-- config.status
|-- configure
|-- configure.in
|-- configure.scan
|-- install-sh -> /usr/local/share/automake/install-sh
|-- missing -> /usr/local/share/automake/missing
|-- mkinstalldirs -> /usr/local/share/automake/mkinstalldirs
|-- src
|   |-- Makefile
|   |-- Makefile.am
|   |-- Makefile.in
|   |-- dlpi.lib
|   |   |-- Makefile
|   |   |-- Makefile.am
|   |   |-- Makefile.in
|   |   |-- dlpi.c
|   |   |-- dlpi.o
|   |   |-- dlpi_lib.h
|   |   `-- libdlpi.a
|   |-- p.c
|   |-- put
|   |-- put.c
|   |-- put.o
|   |-- t
|   |-- t.c
|   `-- t.o
`-- stamp-h
粗体为最原始的文件
1. autoscan
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/p.c)
dnl Checks for programs.
AC_PROG_AWK
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_RANLIB
dnl Checks for libraries.
dnl Replace `main' with a function in -lxnet:
AC_CHECK_LIB(xnet, main)
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h sys/file.h sys/ioctl.h sys/time.h unistd.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME

dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_TYPE_SIGNAL
AC_CHECK_FUNCS(gettimeofday)

AC_OUTPUT(src/Makefile Makefile)
2. 修改configure.scan
增加  AM_INIT_AUTOMAKE(dlpi_app,1.0)   (使用automake)
修改: AC_OUTPUT(src/Makefile src/dlpi.lib/Makefile Makefile)
3. aclocal
4. autoconf (现在生成configure脚本)
5. 编写Makefile.am文件:
top目录下
 AUTOMAKE_OPTIONS = foreign
SUBDIRS = src
Src目录下:
bin_PROGRAMS=   t put (我们要生成2个文件)
t_SOURCES= t.c
put_SOURCES= put.c
SUBDIRS = dlpi.lib (下边还有一个目录)
INCLUDES = -Idlpi.lib/ (制定源代码里边的头文件路径)
LIBS = -lxnet (连接库名字)
LDADD = dlpi.lib/libdlpi.a (用户定义的库)
Dlpi.lib目录下:
noinst_LIBRARIES =      libdlpi.a
libdlpi_a_SOURCES       = dlpi.c dlpi_lib.h
6. automake -a (从Makefile.am 生成Makefile.in)
7. ./configure (生成Makefile)
8. make


中文unix社区 www.unixaid.net 
============================
一个专业的unix技术交流社区


作者: 斯汀 ([email protected])
本 ([email protected]) 首发 
任何问题或者Bug,请及时联络作者.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Copyright www.unixaid.net 2000/11/01
任何网站或者传统媒体转载,必须得到我们的授权!!!
否则我们保留追究相关法律责任的权利!!!










----
中国好酷网 www.haoku.net
 

[关闭][返回]