GNU C语言开发环境(2)

修改日期比目标创建时间新)

     
$*   目标文件名称略去扩展名)      
$@   目标文件名称      

 

2.3.通配符

  允许在规则中使用通配符,支持三种通配符:“*”、“%”、“?”、“[]”。例子见2.4节

 

2.4.规则

  常见规则

规则有时常常简化,分别称为隐含规则、后缀规则、模式规则。


  1.隐含规则

  c程序中,由 .c 生成 .o 文件时,在未给出命令时,由 make 自动添加。

1

 

hello:hello.o<br>hello.o:hello.c

 

  生成目标文件时,依赖是个头文件

1

 

fint.o:find.h tom.h

 

  目标文件是个伪目标,“make clean”、“make install”命令执行时激活伪目标。

1

 

clean:<br>        rm -f *.o<br>install:<br>        install -oview -gview -m700 -T *.out dest/bin/hello<br>        install -oview -gview -m700 -t dest/lib lib*.so lib*.a

 

  2.后缀规则

  定义了将具有某后缀的文件转换为具有另外后缀的文件的方法。

1

 

# .c 文件转换为 .o 文件<br>.c.o:<br>        gcc -c $<

 

  3.模式规则

  定义了一类具有相同行为特点的规则,%表示通配。

1

 

%.o:%.c<br>        $(CC) -c $< -o $@

 

如此,改写规则文件

1

 

%.o:%c<br>        $(CC) -c $< -o $@<br>OBJS=hello.o<br>hello:$(OBJS)<br>        gcc -o $@ $^<br>hello.o:hello.c<br>clean:<br>        rm -f *.o

 

 

2.5.搜索路径

  处理的文件较多时,目录结构较复杂。当需要推导文件的依赖关系时,又需要指明路径。make 的解决方法是,提供一个供搜索的路径,不必指明目录信息。设置一个 VPATH 变量,若当前目录没有找到文件时,就去搜索该变量的路径信息。

VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)) export srctree objtree VPATH

2.6.显示命令

  打印一些信息到屏幕……

[linuxidc.com@linuxidc ~]$ sed -n -e '115p' -e '131,132p' -e '176,177p' Makefile # 显示部分内容 begin: @echo -e "Begin Pretreatment...\n" # 显示信息、打印空行 @sleep 1 @echo -e "Begin Compile...\n" # 显示信息、打印空行 @sleep 1 [linuxidc.com@linuxidc ~]$ make begin # 展示部分内容的效果 Begin Pretreatment... Begin Compile... Begin Link... [linuxidc.com@linuxidc ~]$

2.7.保守赋值

  Makefile 文件中

1

 

vpath = include

 

  普通赋值  

1

 

vpath := include

 

  避免变量递归赋值  

1

 

vpath ?= include

 

  首次定义的变量才会被赋值  

1

 

vpath += include

 

  追加变量的值  

3.创建和使用函数库

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a6f063bb184b93720235c9cada5543ec.html