Makefile中的小魔方

本文主要收集Makefile中的各种稀奇古怪的小魔法。Makefile文件在Gnu文档中。开始之前先注解一下GNU文档中的名词:

VARIABLE = value # 变量,通常大写

Target:
    Recipes

:= 简单扩展性变量

不同于递归扩展性变量 =

X = hello
Y := $(X) world
X = hello the

test:
     @echo Y   # print `hello world`

参考 The Two Flavors of Variables

@ 忽略任务命令输出

通常make命令会在执行target下的每一行任务之前,会打印这行任务代码, 使用@ 可以屏蔽这个输出

参考 Recipe Echoing

- 屏蔽错误

ERROR_STOPED = mkdir test
-ERROR_THROUGH = mkdir test

test-error:
    @mkdir test
    @$(ERROR_STOPED)
    @echo 'done'    # can not print this message, because error occur

test-error:
    @mkdir test
    @$(ERROR_THROUGH)
    @echo 'done'  # print message, because of `-` make ignore the err

参考 Errors in Recipes

`

$$ ` 在Recipes中使用得到字符`$` 典型例子:

LIST = one two three
all:
   @for i in $(LIST); do \
        echo 
$$
i; \
    done

参考Using Variables in Recipes

-- to be continue

上一篇:干货 | 10分钟教你用column generation求解vehicle routing problems


下一篇:人工智能目前适合的5个领域