• 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:
      -@rm -rf *.o
    
    empty.command:
    
    
      # this is a empty command demo

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

    5.2 命令的执行

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

  • 相关阅读:
    NC_100_ATOI NC_102_lowestCommonAncestor NC_104_COMPARE_VERSION NC_109_ISLAND_NUM
    Spring自动注入新写法
    NC_91_LONGEST_INCRE_SUBARRY NC_92_LCSII NC_93_LRU
    linux 下vsftpd安装使用
    IDEA Jrebel 激活方法
    Salieri
    长乐集训集合
    [学习笔记]Prufer序列
    [学习笔记]回文算法
    [学习笔记]基础字符串算法
  • 原文地址:https://www.cnblogs.com/tuhooo/p/8992337.html
Copyright © 2020-2023  润新知