作者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/m.aspx?n=bbs/Programming/M.1670345394.A.F55.html
1F:推 gecer: 感謝220.143.194.220 12/08 19:26