GNU make学习笔记

Posted tuhooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GNU make学习笔记相关的知识,希望对你有一定的参考价值。

第五章:规则的命令

5.1 命令的回显

make在执行命令之前会把要执行的命令输出到标准输出设备,称之为"回显"。

如果规则的命令以字符"@"开始,则make在执行这个命令的时候就不会回显这个将要被执行的命令。

 

另外,如果使用make的命令行参数"-n"或者"—just-print",那么make执行时只显示所要执行的命令,但不会 真正地去执行这些命令。

只有在这种情况下make才会打印出所有make需要执行的命令,其中也包括了使用"@"字符开始的命令。这个选项对于我们调试Makefile非常有用,使用这个选项我们可以按执行顺序打印出Makefile中所有需要执行的所有命令。

 

而make参数"-s"或"—slient"则是禁止所有执行命令的显示,就好像所有的命令均使用"@"开始一样。在Makefile中使用没有依赖的特殊目标".SILENT"也可以禁止命令的回显,但是它不如"@"来的灵活。因此在书写Makefile的时候,我们推荐使用"@"来控制命令的回显。

 

objects = hello, world

foo.o: foo.c defs.h; @echo first command demo # module for twiddling the frobs
  cc -c -g foo.c
  @echo $(objects)

hello:
  @echo hello, linux

.PHONY: clean
clean:
  [email protected] -rf *.o

empty.command:


  # this is a empty command demo

P. S. 这个回显还是很好理解的,回显技能Get,√。

5.2 命令的执行

规则中,当目标需要被重建时。此规则所定义的命令将会被执行,如果是多行命令,那么每一行命令将在一个独立的子shell进程中被执行(就是说,每一行命令的执行是在一个独立的shell进程中完成的)。因此,多行命令之间的执行是相互独立的,相互之间不存在依赖(多条命令的执行为多个相互独立的进程)。

以上是关于GNU make学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

GNU工具链学习笔记

GNU make简要介绍①

综合 gnu make / gcc 教程 [关闭]

GNU make 如何管理文件版本控制?

学习笔记:python3,代码片段(2017)

GNU make“命令在第一个目标之前开始” [重复]