zoukankan      html  css  js  c++  java
  • makefile 学习的点滴总结-(4)

    目录:

    1、伪目标

    2、rm命令的细节问题,RM

    ///////////////////////////////////////////////////////////////////////////////////

    1、伪目标

    (1)为了执行规则所创建的命令,而不是去生成目标。如:

      clean:

        rm *.o temp

      规则中的rm不是去创建clean这个目标的命令,而是为了删除.o和temp文件。

      但是如果该目录下已存在的一个clean文件,则“make clean”不会执行任何动作。

      所以,将一个目标生成伪目标的方法是将它作为一个特殊目标  .PHONY 如:

      .PHONY:clean

      clean:

        rm *.o temp

    ################################################

    (2)all:

    使用一个称为“all ”的伪目标来作为终极目标,它的依赖文件就是那些需要创

    建的程序。下边就是一个例子:
     
    #sample Makefile
    all : prog1 prog2 prog3
    .PHONY : all
     
    prog1 : prog1.o utils.o
      cc -o prog1 prog1.o utils.o
     
    prog2 : prog2.o
      cc -o prog2 prog2.o
     
    prog3 : prog3.o sort.o utils.o
      cc -o prog3 prog3.o sort.o utils.o

    执行make时,目标“all ”被作为终极目标,我们可以通过make的命令行选项来明确指定需要重建的
    程序。例如:“make prog1”

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    2、rm命令的细节问题,RM

      通常在清除文件的伪目标所定义的命令中“rm”使用选项“–f ”( --force )来防止在缺少删除文件时出错并退出,使“make clean”过程失败。也可以在“rm”之前加上“- ”来防止“rm”错误退出,这种方式时make会提示错误信息但不会退出。为了不看到这些讨厌的信息,需要使用上述的第一种方式。
      另外make存在一个内嵌隐含变量“RM”,它被定义为:“ RM = rm –f ”。因此在书写“clean”规则的命令行时可以使用变量“$(RM) ”来代替“rm”,这样可以免出现一些不必要的麻烦!这是我们推荐的用法。

  • 相关阅读:
    C语言——总结回顾
    C语言——第十四、十五周作业
    题目思路——统计素数并求和
    题目思路——单词长度
    C语言——第七周作业
    C语言——第六周作业
    C语言——第四次作业
    C语言——第三次作业
    C语言——第二次作业
    C语言——第一次作业
  • 原文地址:https://www.cnblogs.com/hxu7373/p/3445669.html
Copyright © 2011-2022 走看看