• GNU Make(二)


    在我们为一个具体任务编写程序时,通常都以项目树的形式来组织源代码的布局,而不会仅有一个源程序,对于这种情况,Make 程序就必须到很多个目录中去搜寻依赖目标,如何完成这一任务呢?GNU Make程序给了我们两个非常有用的变量:VPATH 和 vpath。通过这两个变量,可以帮助我们写出有效的 makefile 文件,来完成多个目录的 make 工作。

    假设我们有一个工程,项目树布局如下所示:


    calc/
    |-- makefile
    |-- include/
    |   `-- calc.h
    `-- src/
        |-- add.c
        `-- main.c


    它完成的任务很简单,在主程序里调用运算函数完成指定的算术运算,例如四则运算等(为简化说明,示例工程中只包含加法运算)。因此,我们可以写出如下的 makefile:


    CC = gcc
    CPPFLAGS = -I./include
    VPATH = src include

    calc: main.o add.o
        $(CC) -o $@ $^
        $(RM) $^
    main.o: main.c calc.h
    add.o: add.c


    在shell中运行make,可以看到如下输出结果:


    gcc -o calc src/main.o src/add.o
    rm -f src/main.o src/add.o


    可见,通过给 VPATH 变量赋值,make 程序会自动到 VPATH 变量中指定的目录下搜寻依赖目标,而不用我们手动去指定了。VPATH 变量的内容就是目录列表,通过空格或冒号分隔(windows上是空格或分号,所以最好用空格)。但是 VPATH 变量有一个缺点,就是搜索一个依赖目标时,make 会遍历 VPATH 中的每个目录,如果有同名文件话就很容易出现问题,解决的方法是使用 vpath 变量,它可以指定到哪个目录下搜索哪类目标,语法如下:


    vpath 模式 目录列表


    例如,我们可以把上面的 makefile 改成


    vpath %.c src
    vpath %.h include


    这样,make 程序就知道,应该到 src 目录下搜索 .c 文件,到 include 目录下搜索 .h 文件。

    要强调的一点是,通过 VPATH 和 vpath 变量,我们可以完成源代码放在多个目录下的 make 工作,但是对于更大的工程,只是通过 VPATH 和 vpath 是不够的,autoconf 和 automake 才是更好的选择。

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lijiangshui/archive/2007/01/26/1495199.aspx

  • 相关阅读:
    建议博客园搭个威客平台,可行的发展方向和盈利方向
    SQLServer DBA 三十问(第11~20题)
    sqlserver2000中nvarchar保存韩文乱码问题解决
    beginning Linux programming读书笔记(2)之shell编程
    IBM打狗问题
    Perl入门笔记2之第二章 标量数据
    linux面试大全
    结构体对齐详解
    Linux下静态链接库与动态链接库的区别
    Perl入门 笔记1之第一章简介
  • 原文地址:https://www.cnblogs.com/smartvessel/p/1584576.html
Copyright © 2020-2023  润新知