文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如何使用autoconf及automake生成Makefile

如何使用autoconf及automake生成Makefile

时间:2010-07-01  来源:星巴

Makefile是一系列由目标(Target)、关连(Dependencies)及动作组成的规则集,Make将根据这些规则集来决定如何编译(Compile)各连结(Link)程序等。   Make主要预定义的变量: $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 $< 第一个依赖文件的名称 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建目期晚 $* 不包含扩展名的目标文件名称 $@ 目标的完整名称 $^ 所有的依赖文件,以空格分开,不包含重复的依赖文件 $% 如果目标是归档成员,则该变量表示目标的归档成员名称 GNU Make参考文档如此复杂跟无趣,让人很难有兴趣深入了解这些规则的内在实施,所幸的是,我们还有automake跟autoconf,这些工具可以帮助工程人员建立符合GNU Make规则的Makefile。   网络中有不少文章对此有过介绍,如以下文章,以范例的方式,由简而入对Makefile的自动产生过程进行的分析:http://linux.chinaunix.net/techdoc/develop/2007/07/24/963504.shtml   在这里,我重写这些步骤,记录于此,方便查找
  1. 创建hello目录,创建以下hello文件于此目录

    #include <stdio.h>

    int main()
    {
        printf("Hello, World.\n");

        return 0;
    }

  2. 执行autoscan,这将产生configure.in的雏形文件configure.scan,我们将其改名为configure.in,并修改如下:

    # -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
      
    AC_PREREQ(2.57)
    AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
    AC_CONFIG_SRCDIR([hello.c])

     

    # Checks for programs.

    # 这个宏是必须的,它描述了我们将要生成的软件包的名字及其版本.

    # PACKAGE是软件包的名字,VERSION是版本号。当你使用make dist命令时

    # 它会给你生成一个类似helloworld-1.0.tar.gz的软件发行包,其中就有对

    # 应的软件包的名字和版本号。

    AM_INIT_AUTOMAKE(hello,1.0)


    # Checks for programs.

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

    # Checks for libraries.
    # Checks for header files.
    # Checks for typedefs, structures, and compiler characteristics.
    # Checks for library functions.

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

  3. 执行 aclocal 和 autoconf ,分别会产生 aclocal.m4 及 configure 两个档案
  4. 创建Makefile.am,内容如下

    # 这个是automake的选项。在执行automake时,它会检查目录下是否存在标准# GNU软件包中应具备的各种文件,例如AUTHORS、ChangeLog、NEWS等文件。# 我们将其设置成foreign时,automake会改用一般软件包的标准来检查。

    AUTOMAKE_OPTIONS= foreign

    # 这个是指定我们所要产生的可执行文件的文件名。

    # 如果你要产生多个可执行文件,那么在各个名字间用空格隔开
    bin_PROGRAMS= hello

    # 这个是指定产生“helloworld”时所需要的源代码。如果它用到了多个源文# 件,那么请使用空格符号将它们隔开。比如需要helloworld.h,

    # helloworld.c那么请写成helloworld_SOURCES= helloworld.h

    # helloworld.c。
    hello_SOURCES= hello.c

  5. 执行 automake --add-missing ,Automake 会根据 Makefile.am 档产生一些档案,包含最重要的 Makefile.in

"--add-missing"的意思是add missing standard files to package

最后执行./configure即可生成Makefile.以上所述内容可大体上帮助我们建立一简单的Makefile,但如果要建立更复杂的Makefile则需要深入autoconf及automake的使用方法,或参考其它开源代码中的configure.in及Makefile.am文件




相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载