CURDIR
表示调用make的当前目录.
MAKECMDGOALS
命令行上指定的目标列表,若没有指定,则为空.
override directive
如果一个变量在命令行指定了,那么在Makefile中的指定就会被忽略.如果在命令行指定后,你还要在Makefile中指定,可以用override指令指定.
$(realpath names…)
将names变成绝对路径返回
$(subst from, to, text)
text中,每一个from替换为to
$(origin variable)
该函数告诉该变量从哪里来
- undefined 表示该变量没有被定义
- default 表示该变量有默认的定义
- environment 表示是从启动make的环境来的
- environment override 表示从启动make的环境来的, 再Makefile文件中被override
- file 表示Makefile中定义的
- command line 表示在命令行中定义的
- override 表示在Makefile中使用override定义的
- automatic 表示定义给recipe文件中执行的每条规则的自动变量
$(call variable, param, param, …)
你可以写一个复杂的表达式作为一个变量的值,然后用call函数展开.
例如:
zephyrmake = @+$(MAKE) -C $(ZEPHYR_BASE) O=$(1) CFLAGS=$(CFLAGS) PROJECT=$(PROJECT_BASE) SOURCE_DIR=$(SOURCE_DIR) $(2)
call函数中param对应与之对应