文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>符合GUN惯例的Makefile生成

符合GUN惯例的Makefile生成

时间:2006-11-13  来源:smx2lh

--最近工作中遇到需要生成符合自由软件惯例的Makefile的问题.学习总结以便备用.MSN:[email protected]--   一般大家写makefile都是怎么方便怎么写,很少考虑符合什么规范. autoconf和automake这两个工具可以方便的自动生成符合GUN规范的Makefile.这样就可以象普通的GUN软件一样执行"./configure"生成Makefile,"make","make install"来安装.   一.Makefile简介   Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。   Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。   二.详细过程 1.在你的工作目录下建一个hello目录,我们用它来存放hello程序及相关文件
$ mkdir hello
$ cd hello
  2.编辑源程序,假定文件名叫"hello.c"
int main(int argc, char** argv)
{
printf("Hello, GUN Makefile\n");
return 0;
}
  3.生成configure   1> 使用autoconf命令来帮助我们根据目录下的源代码生成一个configure.in的模板文件.
$ autoscan
$ ls
configure.scan hello.c

  2> 将configure.scan改名为configure.in,按下面的内容修改,去掉无关的语句:

====================configure.in内容开始===================
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_INIT(hello.c)
AM_INIT_AUTOMAKE(hello, 1.0)

# 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内容结束===========
    3> 执行命令aclocal和autoconf,分别会产生aclocal.m4及configure两个文件:

$ aclocal
$ autoconf
$ ls
aclocal.m4 autom4te.cache configure configure.in hello.c

  4> 新建Makefile.am文件
     内容如下:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
helloworld_SOURCES=hello.c
       5> automake会根据你写的Makefile.am来自动生成Makefile.in。

$automake  --add-missing
configure.in: installing `./install-sh'
configure.in: installing `./mkinstalldirs'
configure.in: installing `./missing'
Makefile.am: installing `./depcomp'
$ls
aclocal.m4 autom4te.cache configure configure.in hello.c makefile.am makefile.in


  6> 执行configure生成Makefile

$./configure
$ls
aclocal.m4 autom4te.cache configure configure.in hello.c makefile makefile.am makefile.in

到此为止,一个符合GUN规范的Makefile就完成了.

三.工具和命令的有关知识

1.autoscan

autoscan是用来扫描源代码目录生成configure.scan文件的。autoscan可以用目录名做为参数,但如果你不使用参数的话,那么autoscan将认为使用的是当前目录。autoscan将扫描你所指定目录中的源文件,并创建configure.scan文件 


2.acloacl

aclocal是一个perl 脚本程序。aclocal根据configure.in文件的内容,自动生成aclocal.m4文件。aclocal的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”。 

3.autoconf

autoconf是用来产生configure文件的。configure是一个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产生合适的Makefile,从而可以使你的源代码能在不同的操作系统平台上被编译出来。

AC_INIT(FILE) 这个宏用来检查源代码所在的路径

AM_INIT_AUTOMAKE(PACKAGE, VERSION)这个宏是必须的,它描述了我们将要生成的软件包的名字及其版本号:PACKAGE是软件包的名字,VERSION是版本号。当你使用make dist命令时,它会给你生成一个类似helloworld-1.0.tar.gz的软件发行包,其中就有对应的软件包的名字和版本号

AC_PROG_CC  这个宏将检查系统所用的C编译器

AC_OUTPUT(FILE) 这个宏是我们要输出的Makefile的名字

相关阅读 更多 +
排行榜 更多 +
锤击

锤击

休闲益智 下载
穿越时空的猫里奥

穿越时空的猫里奥

动作格斗 下载
麻匪动态壁纸

麻匪动态壁纸

主题美化 下载