Makefile常用函数之创建参数化函数
1. 使用 call 创建新的参数化函数
语法: $(call <expression>,<parm1>,<parm2>,<parm3>...)
-
其中表达式可以是命令包define-endef名称,parm1在引用时使用$(1),parm2在引用时使用$(2),parm3在引用时使用$(3) …
-
示例:
define compile_template $$($(1)_p_tests): $(1)-p-%: $(1)/%.S $$(RISCV_GCC) $(2) $$(RISCV_GCC_OPTS) -I$(src_dir)/../env/p -I$(src_dir)/macros/scalar -T$(src_dir)/../env/p/link.ld $$< -o $$@ $(1)_tests += $$($(1)_p_tests) endef $(eval $(call compile_template,rv64ui,-march=rv64g -mabi=lp64))
2. “eval”: 将内容作为makefile的一部分而被make解析和执行:
- 语法: $(eval text)
- 其中 text 被 make 解析与执行,示例如上。