zoukankan      html  css  js  c++  java
  • makefile之伪目标

    伪目标

    1. 伪目标的语法:

    在书写伪目标时,首先需要声明伪目标,然后再定义伪目标规则.
    

    1.1 声明伪目标:

    .PHONY clean (这里声明clean是伪目标)
    

    1.2 定义伪目标规则:

    clean:		(这里定义伪目标clean的规则,即伪目标的执行动作)
    	rm *.c
    

    2. 伪目标的作用:

    2.1 避免目标名与文件名冲突

    	也即,如果指定了伪目标,那么伪目标一定会被执行。
    

    2.2 提高执行效率

    	当一个目标被声明为 伪目标后,makefile在执行规则时不会去试图查找隐含规则来创建它。
    

    3. 伪目标的示例:

    3.1 文件名冲突

    3.1.1 当文件名冲突示例

    假设,makefile 当前目录下有与伪目标clean 同名的文件clean,而makefile中没有定义伪目标clean。

    #.PHONY: clean
    clean:
    	rm temp
    

    源码路径:

    从执行的结果可以看出,目标clean并未执行。

    .PHONY: clean
    clean:
    	rm temp
    

    源码路径:

    从执行结果可以看出,伪目标clean执行了,由于当前目录下没有temp目录,所以提示“No such file or directory”。但是在 rm前加上-,可以忽略错误,make会继续向下执行。

    3.1.2 多文件名冲突示例

    .PHONY: all clean prog1 prog2 prog3
    all: prog1 prog2 prog3
    
    prog1:
        gcc prog1/main.c -o p1
    
    prog2:
        gcc prog2/main.c -o p2
    
    prog3:
        gcc prog3/main.c -o p3
    
    clean:
        rm p1 p2 p3
    
    

    源码路径:https://github.com/suonikeyinsuxiao/trunk/tree/master/makefile_project/phony/phony2

    如果将伪目标的声明改为 .PHONY: all clean,目标prog1,prog2,prog3将不会被执行。

  • 相关阅读:
    python
    突然萌发关于 redis 的想法(1)
    Liunx
    Git
    说一下数据库查询 和 分页问题的解决
    易忘点
    python
    python
    python
    python
  • 原文地址:https://www.cnblogs.com/black-mamba/p/9637064.html
Copyright © 2011-2022 走看看