makefile使用:Make使用介绍说明

  Make是种代码维护工具.在大中型项目中,他将根据各个模块更新情况,自动维护和生成目标.能很好做到”不多”,”不重””不漏”.
  不多:他只更新那些需要更新文件,而不懂那些并不过时东西
  不重:是指当make对某个文件进行更新时,即使有很多文件过时,他也将只更新次,当然,这次就足够了
  不漏:是指他不会漏下任何应该更新文件.
  1,make基本使用
  make在使用时有系列规则,他将根就这些规则来解释他配置脚本,以达到它设计目.这个配置脚本缺剩名是makefile ,Makefile.也可以用其它文件名.我们这里所讲make应用就是怎样写出高效,简洁,正确makefile文件.
  Make使用形式为
  Make [option] [macrodef][target]
  Option指出make工作行为,make具体选项有:
  -c dir make在开始运行后工作目录为指定目录
  -e 不允许在makefile中队环境宏赋值
  -f filename 使用指定文件作makefiel
  -k 执行命令出错时,放弃改目标去维护其它目标
  -n 按实际运行时执行顺序现实命令,包括用@开头命令,但不振执行
  -p -现实makefile中所有宏定义,河内部规则
  -r 忽略内部规则
  -s 执行但不显示命令,常用来检查makefile正确性
  -S 执行make时 出错即退出
  -t 修改每个目标文件创建日期,但又不正创建
  -V 打印make版本号
  -x 将所有宏定义输出shell环境中
  -i  忽略运行make 中,而又不退出make
  在使用make 维护目标时候,为了调试,常使用 make 2 > errofile.这样信息就都写入了errofile
  2.1makefile 基本书写
  make 使用依据是依赖关系.如又工程example ,他依赖于.o e1.o e2.o,而.o 依赖于.c l.h .e1.o依赖于e1.c l.h ,e2.o 依赖于e2.c.
  这样就形成棵树.及双亲节点,依赖于孩子节点.当make 进行维护时.他呼对这棵树.进行次后序遍历.如果发现孩子节点形成时间晚于双亲节点形成时间.便开始维护.原理十分简单.
  现在,我们开始,我们主要内容: 如何书写makefile.makefile 是供make 使用个配置脚本.他是按规则写成.它组成是以个要维护目标为个单元,每个单元书写形式如下:
  要维护目标列表 要维护目标属性 分割符(般为 依赖文件列表 命令行属性 ;第条命令
  tab键 命令1…..
  需要介绍说明是,第条命令可以加; 跟在依赖文件列表后,也可以和其它命令另起行写.定要记得加tab键.否则make 不认识.当条命令太长行放不下是使用/l来换行.
  注释行用#开头.
  这样来.我们前面举例子就可以写成这样makfile
  example : .o e1.o e2.o
  gcc -o example .o e1.o e2.o
  .o :.c l.h
  gcc -c .c
  e1.o :e1.c l.h
  gcc -c e1.c l.h
  e2.o:e2.c
  gcc -c e2.c
  可以用cat -e -v-t makefile 其中-v-t可以让tab键显示^I ,是makefile 末尾显示$,这样可以检验,makefile正确性.
  可见,书写个简单makefile文件并不困难.然而在大中型项目中.要通过makfile 做大量维护和调试.这样会是员增加很大工作量.因此,make 引入了些属性变量,和宏变量,来控制make .甚至可以像c预言条件编译那样.通过些shell语句来控制.接下来.我们将讲解.
  2.2 makfile中属性控制
  2.2.1分割符
  分割符般用: 但也用::,:!:^,:-下举例介绍说明下这几个分割符作用般目标文件只能出现次.只有使用::时才可以出现多次如:
  a.o::a.c
  #命令1
  a.o::b.c
  #命令2
  意思是:如果a.c更新.使用命令1.b.c更新使用命令2
  :^ 将指定依赖文件和目标文件依赖文件结合起来
  :- 清除目标文件原有依赖文件,将指定文件为目标文件依赖文件
  :! 对每个更新过依赖文件都执行遍命令菜单
  如:
  a.o :b.c
  a.o:^ c.c
  此时a.o 依赖文件是b.c 和c.c
  a.o:- a.c
  此时 a.o 依赖文件只剩下a.c了
  2.2.2 命令行属性
  命令好属性较简单只有 3种
Tags:  n97使用说明 使用说明 会计科目使用说明 makefile使用

延伸阅读

最新评论

发表评论