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

  • 相关阅读:
    [模板]LCA
    洛谷 P1103 书本整理(动规)
    [模板]KMP字符串匹配
    [模板]优先队列(堆)
    Java面试题10(如何取到set集合的第一个元素)
    Java集合操作类Collections的一些常用方法
    本机不装Oracle,使用plsql连接远程Oracle的方法
    ORACLE配置tnsnames.ora文件实例
    JS正则表达式验证数字
    diea破解
  • 原文地址:https://www.cnblogs.com/will-boot/p/3355273.html
Copyright © 2011-2022 走看看