Chinaunix首页 | 论坛 | 博客
  • 博客访问: 587495
  • 博文数量: 201
  • 博客积分: 3076
  • 博客等级: 中校
  • 技术积分: 2333
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-02 19:44
文章分类

全部博文(201)

文章存档

2010年(118)

2009年(83)

我的朋友

分类:

2010-03-18 14:43:56

     1.在使用指示符“define”定义一个多行的变量或者命令包时,其定义体( "define"和            
      “endef”之间的内容)会被完整的展开到 Makefile 中引用此变量的地方(包含定义体中的注释行);
       make 在引用此变量的地方对所有的定义体进行处理,决定是注释还是有效内容。
    2.make 程序在处理指示符 include 时,将暂停对当前使用指示符“include”的 makefile 文件
的读取,而转去依此读取由“include”指示符指定的文件列表。直到完成所有这些文件以后再回
过头继续读取指示符“include”所在的 makefile 文件。

3.     如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...)    ,
而且当前目录下也不存在此文件;make将根据文件名试图在以下几个目录下查找:首先,查找使
                                  (参考 8.7make的命令行选项 一节)指定的目录,如
用命令行选项“-I”或者“--include-dir”
果找到指定的文件,则使用这个文件;否则依此搜索以下几个目录(如果其存在)                          :
“/usr/gnu/include”“/usr/local/include”和“/usr/include”
                  、                                  。
   当在这些目录下都没有找到“include”指定的文件时,make将会提示一个包含文件未找到的
               而是继续处理Makefile的内容。当完成读取所有的makefile文件后,
告警提示, 但是不会立刻退出。
make将试图使用规则来创建通过指示符“include”指定的但未找到的文件(参考 2.7 makefile
         ,当不能创建它时(没有创建这个文件的规则) make将提示致命错误并退出。
文件的重建 一节)                         ,
 ake 在执行时,首先读取的是环境变量“MAKEFILES”所指定的文件列表,之后才是
工作目录下的 makefile 文件, include”所指定的文件是在 make 发现此关键字的时、
                   “
暂停正在读取的文件而转去读取“include”所指定的文件。


4.
    make 的执行过程如下:
    1. 依次读取变量“MAKEFILES”定义的 makefile 文件列表
    2. 读取工作目录下的 makefile 文件(根据命名的查找顺序“GNUmakefile”“makefile”
                                                  ,         ,
       “Makefile”,首先找到那个就读取那个)
2004年9月11日                                                 25
GUN make中文手册
   3.  依次读取工作目录 makefile 文件中使用指示符“include”包含的文件
   4.  查找重建所有已读取的 makefile 文件的规则(如果存在一个目标是当前读取的某一个
       makefile 文件,则执行此规则重建此 makefile 文件,完成以后从第一步开始重新执行)
   5.  初始化变量值并展开那些需要立即展开的变量和函数并根据预设条件确定执行分支
   6.  根据“终极目标”以及其他目标的依赖关系建立依赖关系链表
   7.  执行除“终极目标”以外的所有的目标的规则(规则中如果依赖文件中任一个文件的时间
       戳比目标文件新,则使用规则所定义的命令重建目标文件)
   8.  执行“终极目标”所在的规则
            
明确以下基本的概念;在 make 执行的第一阶段中如果变量和函
数被展开,那么称此展开是“立即”的,此时所有的变量和函数被展开在需要构建的结构链表的对
应规则中(此规则在建立链表是需要使用)。其他的展开称之为“延后”的。这些变量和函数不会
        而是直到后续某些规则须要使用时或者在 make 处理的第二阶段它们才会被展开。
被“立即”展开,

追加到变量“MAKEFILE_LIST”的定义域中。

5
                    如果我们的规则如果需要
“$”,需要书写两个连续的( $$”。
              “   )
动环变量“$?”用在这里表示依赖文件列表中被改变过的所有文件。
  规则命令行中的自动化变量“$^”代表所有的是的通过目录搜索得到的依赖文件的完整路径名
(目录+一般文件名)列表。 $@”代表规则的目标。所以对于一个规则我们可以进行如下的描述:
             “
自动化变量“$<”代表规则中通过目录搜索得到的依赖文件列表的第一个依赖文件
阅读(604) | 评论(0) | 转发(0) |
0

上一篇:list.h

下一篇:Writing Netfilter modules

给主人留下些什么吧!~~