设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 操作系统 >> SCO UNIX >> GNU Make 简介
精品推荐
SCO UNIX点击TOP10
·HP-UX系统备份与恢复全功略
·HP上安装ORACLE RAC
·GNU Make 简介
·SCO TCP/IP 网络管理
·在UNIX5.0.5 系统中巧用sar 命令进行系统维护
·UNIX系统被删文件的恢复策略
·在PC Xwindows远程登陆Unix上支持中文
·SCO UNIX学习宝典(基本配置及操作)
·UNIX系统下各文件的作用
·HPUX做代理服务器
操作系统点击TOP10
·Windows Vista完全硬盘安装法
·Windows Vista 激活不求人
·Windows Vista局域网网络连接设置
·Windows Vista系统动态桌面截图欣赏
·Windows XP中磁盘的分区应用
·Windows NT/2000/XP 出现蓝屏并显示“STOP 0x0000007f”错误
·让Windows XP变身Vista
·一招搞定Vista系统软件不兼容问题
·教你如何正确配置和优化Windows Vista
·只转两圈 加快Windows XP启动速度
精选专题

GNU Make 简介

作者: 来源:网络文章 时间:2005-12-13 0:44:56

GNU Make 简介(2)
1.3 规则简介

  makefile 中的规则是这样的:

  TARGET... : DEPENDENCIES ...
   COMMAND
   ...

  目标(TARGET)程序产生的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。

  依赖(DEPENDENCIES)是用来产生目标的输入文件,一个目标通常依赖于多个文件。

  命令(COMMAND)是make 执行的动作,一个可以有多个命令,每个占一行。

  注意:每个命令行的起始字符必须为TAB 字符!

  有依赖关系规则中的命令通常在依赖文件变化时负责产生target 文件,make 执行这些命令更新或产生target。规则可以没有依赖关系,如包含target “clean”的规则。

  规则解释如何和何时重做该规则中的文件,make 根据依赖关系执行产生或更新目标;规则也说明如何和何时执行动作。有的规则看起来很复杂,但都符合上述模式。

1.4 make 工作原理

  缺省make 从第一个target 开始(第一个非 "." 开始的target),这称作缺省目标。在上述的makefile 中,缺省目标是更新执行程序"edit",将这个目标置于最前面。当执行make 的时候,make 程序从当前目录读入makefile 开始处理第一个规则;在例子中,这个规则是重新链接"edit";在make 处理这个规则之前,必须处理"edit"所依赖的那些文件的规则,例子中是目标文件。这些文件按照他们自己的规则处理:通过编译源文件来更新每个".o"文件;当依赖关系中的源文件或头文件比目标文件新,或目标文件不存在时,必须重新编译。

  其它的规则被处理是因为他们的target是目标的依赖,和目标没有依赖关系的规则不会被处理,除非指定make 处理(如make clean)。在重新编译目标文件之前,make 会试图更新它的依赖:源文件和头文件。例子中的makefile 对源文件和头文件未指定任何操作:".c"和".h"文件不是任何规则的目标。确认所有的目标文件都是最新的之后,make 决定是否重新链接"edit":如果"edit"不存在,或者任何一个目标文件都比它新,则链接工作将进行。

  这样,如果我们改变insert.c 运行make,make 会编译这个文件来更新"insert.o",然后链接"edit";如果修改了"command.h"运行make, "kbd.o", "command.o", "files.o"会重新生成,链接"edit"。

1.5 使用变量

  在例子中,在规则"edit"中,目标文件被列出来两次:

  edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.o
  cc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o

  这样的重复容易出错:假设工程中加入了一个新的目标文件,可能只将其加入了一个列表中;通过使用变量可以消除这种风险:变量允许一个预定义的字符串在多个地方被替换。

  在makefile 中,可以写这样一行来定义"object"变量:

  objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o

  于是在需要目标文件名列表的地方,使用$(object) 来代替变量的值。以下是使用了变量以后的makefile:

  ----------------------------------------------------------------------------
  objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o

  edit : $(objects)
  cc -o edit $(objects)

  main.o : main.c defs.h
  cc -c main.c

  kbd.o : kbd.c defs.h command.h

共14页 9 7 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [148 :>

GNU Make 简介 相关文章:
GNU Make 简介 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com