zoukankan      html  css  js  c++  java
  • Makefile中的目标

    Makefile中的目标

    一般目标

    • 目标就是我们需要的最终文件,也是make的最终输出  
    • Makefile的运行机制是:先将目标当成文件,查看文件是否存在,如果存在且是最新,那么直接结束,如果文件不存在,那么根据依赖和命令生成目标。

    伪目标

    • 伪目标也是目标
    • 伪目标是一种特殊的目标,有其特殊性
    • 伪目标的特殊性:伪目标不会当成文件来判断,只是一个标签
    • 伪目标同样可以有依赖,这样make伪目标时就是先make依赖,然后运行规则
    • 作用:伪目标每次都会更新
    • 格式:.PHONY : xxx
    • 例子:
    .PHONY : clean
    #只要有这个声明,不管是否有“clean”文件,要运行“clean”这个目标,只有“make clean”
    

      

    多目标

    • Makefile 的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖 于一个文件,并且其生成的命令大体类似
    bigoutput littleoutput : text.g 
    	generate text.g -$(subst output,,$@) > $@
    #等价于
    bigoutput : text.g 
    	generate text.g -big > bigoutput 
    littleoutput : text.g
    	generate text.g -little > littleoutput 
    

      

    相同目标

    • 多条规则目标相同,称为相同目标
    • Makefile的处理规则:如果多条规则中只有一条规则有命令,那么直接合并成一条规则,目标不变,依赖叠加;如果有多条规则有命令,那么后面的规则会覆盖前面的规则,且会爆告警
    • Makefile中的自动头文件依赖就是利用目标相同时,规则合并的技术实现
    target1: dep1
    target1: dep2
        cmd2
    
    #合并后
    
    target1: dep1 dep2
        cmd2
    
    target1: dep1
        cmd1
    target1: dep2
        cmd2
    
    #合并后
    
    target1: dep2
        cmd2
    

      

  • 相关阅读:
    返回到上一页的html代码的几种写法
    记一次网站服务器内存占用过多问题
    rpm命令数据库修复日志
    Linux vmstat命令实战详解
    innodb的innodb_buffer_pool_size和MyISAM的key_buffer_size
    mysql
    如何查看linux系统下的各种日志文件 linux 系统日志的分析大全
    /var/lock/subsys作用
    CentOS目录结构详解
    MySQL体系结构
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11384712.html
Copyright © 2011-2022 走看看