zoukankan      html  css  js  c++  java
  • make的用法

    make 规则:

    当依赖比目标"新"时执行命令.
    target: prerequisite
    <TAB>command

    1. 多目标:
    file1.o file2.o : source1.c source2.c source3.c
    <TAB>command

    2. 伪目标:
    .PHONY: help
    help:
    <TAB>command

    3. 模式规则:
    %: make中使用的通配符号, 代表柄(stem).
    例如, 想使用add.c sub.c生成add.o和sub.o, 即可使用此规则
    %.o : %.c
    <TAB>command

    4. 限制的模式规则:
    和模式规则一样, 但是目标只有a.o和b.o
    a.o b.o : %.o : %.c
    <TAB>command
    变量定义:
    --------------------------------
    延后赋值: 变量被引用时才求值
    var = str

    立即赋值
    var := str

    追加赋值: 给变量追加值, 如果变量原来是立即赋值的,
    则追加也是立即的; 否则为延后追加赋值.
    var += str

    条件赋值: 变量没有定义则使用该赋值.
    var ?= str


    变量引用:
    --------------------------------
    使用$(var)形式或者${var}形式引用变量. makefile中一般
    只使用$(var)形式.
    注意: shell脚本只使用${var}形式引用变量, shell脚本中
    $(command)表示命令替换, 即执行command命令并可将命令输出
    赋值给某shell变量.
    makefile是make解析的, 和shell脚本是两回事.


    一个 := 与 = 区别的例子:
    --------------------------------
    CC := gcc
    CFLAGS := -g
    CCOMP = $(CC) $(CFLAGS)
    $(info Compiler is $(CCOMP))

    CC := arm-linux-gcc
    $(info Compiler is $(CCOMP))


    内置变量:
    --------------------------------
    $@ 规则目标
    $< 规则依赖中第一个预备文件
    $^ 规则依赖中所有预备文件的完整清单

    $(@D) 规则目标文件的所在目录
    $(@F) 规则目标文件的文件名


    变量高级用法:
    --------------------------------
    foo := a.o b.o c.o
    var := $(foo:.o=.c)

    替换后变量var的值是 a.c b.c c.c

  • 相关阅读:
    【HDOJ】2267 How Many People Can Survive
    【HDOJ】2268 How To Use The Car
    【HDOJ】2266 How Many Equations Can You Find
    【POJ】2278 DNA Sequence
    【ZOJ】3430 Detect the Virus
    【HDOJ】2896 病毒侵袭
    求奇数的乘积
    平方和与立方和
    求数列的和
    水仙花数
  • 原文地址:https://www.cnblogs.com/will-boot/p/3355273.html
Copyright © 2011-2022 走看看