|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
对于一组执行相同规则的命令,可以用define endef封装成命令包,例如
PROGRAMS = server client
define cmd_pkg
$(1)_nn : $$($(1)_xxx)
xxx_cmd
endef
$(feach proc,$(PROGRAMS) ($(eval $(call cmd_pkg,$(proc)))
eval函数会将cmd_pkg展开成make 命令,feach函数会将数组里的元素逐步遍历,上面的代码就会将server和client展开执行cmd_pkg中的指令,$(1)代表命令包的第一个参数,命令包可以支持多个参数,依次为$(2),$(3)... $$表示是一个变量,比如$$($(1)_xxx) 展开就是 $(server_xxx)和$(client_xxx),这里有一个坑,就是调用函数时逗号和下一个参数之间不能有空格,否则参数传递不进去
|
|