作者gusion ()
看板Programming
标题Re: [问题] makefile语法疑问
时间Wed Dec 7 00:49:52 2022
如果recipe的部分都是相同的,只是target有的有%有的没有
那也可以考虑动态生成rule
概念就是从source变数把target一个一个抓出来,动态生出
target1:
recipe
target2:
recipe
...
具体作法如下:
------------------------------------------------------------
define RULE
$(1):
@echo $$@
endef
source := folder1_% \
folder2_% \
sim
$(foreach target,$(source),$(eval $(call RULE,$(target))))
------------------------------------------------------------
执行结果:
$ make folder1_01
folder1_01
$ make folder2__01
folder2__01
$ make sim
sim
可以参考看看,比较需要注意的是define里面要生成变数,要使用$$来跳脱$字元
不然的话就会在生成期间读取变数,而不是生成包含变数的recipe
※ 引述《gecer (gecer)》之铭言:
: 小弟试着更改makefile内容
: ===============================================================================
: source:=folder1_%\
: folder2_%\
: $(source)
: @echo $@
: ===============================================================================
: 指令make folder1_01
: folder01_01
: 指令make folder2__01
: folder02_01
: 但是如果增加一个没有%的target pattern
: ===============================================================================
: source:=sim\
: folder1_%\
: folder2_%\
: $(source)
: @echo $@
: ===============================================================================
: 指令make sim
: mixed implicit and normal rules: deprecated syntax
: sim
: 指令make folder1_01
: mixed implicit and normal rules: deprecated syntax
: No rule to make target 'folder1_01'. Stop.
: 似乎增加一个normal target pattern会影响到含% target pattern的match
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.252.23.7 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1670345394.A.F55.html
1F:推 gecer: 感谢220.143.194.220 12/08 19:26