Makefile学习笔记

来源:互联网 发布:网络电缆测试仪上电池 编辑:程序博客网 时间:2024/06/15 16:52
Makefile知识简单总结
 以下大部分信息来自跟我一起写Makefile
 一个简单的例子如下;
  int main()
  {
  char str[20];
  scanf("%[^r]",str);
  printf("%s\n",str);
  return 0;
  }
  
  target : test.o
  cc -o target test.o
  test.o : test.c
   cc -c test.c   #命令必须要以tab键开头
  clean:
   rm target test.o
 
 1,Makefile中的变量
  示例: objects = main.o 那么在makefile中可以像如下这样使用该变量 $(objects)
 2,清空目标文件的规则
  .PHONY : clean       #.PHONY表示clean是一个伪目标
  clean :
   -rm target   #rm前加一个-表示也许删除过程某些文件出现问题,但是忽略错误
 3,Makefile的文件名
  默认使用Makefile,如果一定要使用其它的文件名,可以用make -f来指定对应的makefie
 4,引用其它的Makefile
  include <filename>
  示例如下: include foo.mak
 5,Makefile的书写规则
  第一条规则中的目标被确定为最终目标
  makefile的书写规则是支持通配符的,有如下三种:“*”,“?”,“[...]” 如: a[bcd]e可以是abe或者aceh或者ade  “?”表示匹配字符一次或者0次
 6,Makefile中文件的搜索
  用VPATH变量或者vpatch关键字
 7,Makefile中的伪目标
  .PHONY
 8, $@  自动化变量,表示目标集中所有目标的集合
    $<  自动化变量,表示了所有依赖目标的挨个值
 9,makefile命令的执行
  使用“@”时,这个命令不被make显示出来,
  对于makefile的调试可以使用make -n,那么只显示命令而不执行具体命令
  如果后一条命令的执行依赖于前一条命令那么两条命令必须在同一行,中间用分号隔离,如: cd /home ;pwd
  为了忽略命令的执行错误可以在命令前加一个 “-”
 10,makefile中的变量
  makefile中的变量可以使用后面定义的值,
  makefile中用变量定义变量的方法:
  y := $(x) bar
  x := foo
  那么y的值是bar,而不是 foo  bar,所以用 := 前面的变量不能使用后面的变量
  我们可以使用“+=”来给变量追加值
 11,makefile中使用条件判断
  ifeq ($(cc),gcc)
   $(cc) -o .....
  else
   ....
  endif
  具体的关键字有: ifeq  ifneq ifdef ifndef
 12,makefile中使用函数
  函数如何调用:$(<function><arguments>),函数名和参数之间以空格分隔,参数之间以逗号分隔,函数的参数可以使用变量
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
  
0 0
原创粉丝点击