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

  • 相关阅读:
    ASP.NET MVC one view bind many model
    说一说MVC的CustomHandlerErrorAttribute(五)
    今天俺要说一说工厂方法模式(Factory)
    今天俺要说一说简单工厂模式(Simple Factory)
    我对SQL性能优化的看法,对我的文章有提议的欢迎评论!
    Linux 服务管理两种方式service和systemctl
    Linux grep命令
    Linux 守护进程
    linux Ctrl+z和Ctrl+c的区别
    linux系统卡解决方案
  • 原文地址:https://www.cnblogs.com/will-boot/p/3355273.html
Copyright © 2011-2022 走看看