zoukankan      html  css  js  c++  java
  • Makefile快速查阅

    target ... : prerequisites ...
    command
        target         //目标文件,O文件 或者是可执行文件
        prerequisites  //生成target所需要的文件或者目标
        command           //make需要执行的命令(任意shell命令),makefile中的命令必须以[tab]开头
        
    #符号:用于注释,如果要显示符号本身,需要进行转义,#    

    @符号
        通常makefile会将其执行的命令行执行前输出到屏幕上。
        如果@加到命令行前,这个命令将不被make回显出来。
        
    -符号
        通常删除或创建文件如果碰到文件不存在或者已经创建了,那么希望忽略掉这个错误,继续执行。
        -rm dir;
        -mkdir aaadir;

    +符号
        它的意思和 '-' 相反,表示不忽略
        
    $符号
        主要是扩展打开makefile中定义的变量

    符号:换行符,方便显示。将太长的一行分割成多行方便显示,逻辑上还是一行;    

     $@  //目标文件,
     $^  //所有的依赖文件
     $<  //第一个依赖文件
     $?

     
    “=”说明
    VIR_A = A
    VIR_B = $(VIR_A) B
    VIR_A = AA
    经过上面的赋值后,最后VIR_B的值是AA B,而不是A B。在make时,会把整个makefile展开,拉通决定变量的值

     
    “:=”说明
    VIR_A := A
    VIR_B := $(VIR_A) B
    VIR_A := AA
    ”:=”就表示直接赋值,赋予当前位置的值

     
    “?=”说明
    “?=”表示如果该变量没有被赋值,则赋予等号后的值。
    VIR := old_value
    VIR ?= new_value
    这种情况下,VIR的值就是old_value

     
    +=说明
    “+=”和平时写代码的理解是一样的,表示将等号后面的值添加到前面的变量上

    $@表示生成目标
     
    比如
    boot.o : boot.c
         gcc -o $@ -c $<
         
    其中 $@表示生成的目标 boot.o
      $< 表示生成的依赖文件 boot.c

    ===================================================

    https://blog.csdn.net/weixin_38391755/article/details/80380786
    https://www.cnblogs.com/wang_yb/p/3990952.html
    https://blog.csdn.net/u012989012/article/details/80572043
    https://blog.csdn.net/weixin_38391755/article/details/80380786
    https://www.cnblogs.com/wang_yb/p/3990952.html

     

    知行合一
  • 相关阅读:
    HDU 1114 Piggy-Bank
    HDU 2955 Robberies
    NTOJ 290 动物统计(加强版)
    POJ 3624 Charm Bracelet
    HDU 2602 Bone Collector
    POJ 1523 SPF(无向图割顶)
    HDU 5311 Hidden String
    HDU 1421 搬寝室
    HDU 1058 Humble Numbers
    POJ 3259 Wormholes(spfa判负环)
  • 原文地址:https://www.cnblogs.com/grooovvve/p/14453458.html
Copyright © 2011-2022 走看看