zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    C# 操作ini配置文件
    2015-2016跨年感想
    HTTP 状态码总结 (HTTP Status Codes)
    简单、精准、高效的使用搜索引擎,快速的找到你想要的结果
    ASP.NET前后台交互之JSON数据
    软件开发项目做需求分析的一点心得
    我是如何自学编程的“3遍读书法”
    C#中Request.ServerVariables详细说明及代理
    C#
    JavaScript如何计算两个日期间的时间差
  • 原文地址:https://www.cnblogs.com/smartvessel/p/1584576.html
Copyright © 2011-2022 走看看