本文主要收集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下的每一行任务之前,会打印这行任务代码, 使用@
可以屏蔽这个输出
-
屏蔽错误
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
`
$$ ` 在Recipes中使用得到字符`$` 典型例子:
LIST = one two three
all:
@for i in $(LIST); do \
echo
$$
i; \
done
-- to be continue