0
我試圖將* .s文件作爲輸入,並將擴展名爲.txt的文件作爲輸出文件去除。我以爲我可以使用($basename ...)
立即綁定,但這不起作用。我的小例子:Makefile:immedate任務評估懶惰?
INPUT := *.s
OUTPUT := $(basename $(INPUT))
all:
echo 'input:' $(INPUT)
echo 'output:' $(OUTPUT)
運行時
,產生
echo 'input:' *.s
input: hello.s int3.s
echo 'output:' *
output: Makefile int3 hello hello.o hello.s int3.s
我以爲:=
將迫使即時評價,但似乎真正做一個懶惰的結合,以及基本名稱去掉了「.S」來自 」*」。因此這將導致目錄中的所有文件。如何得到這只是給我的擴展名刪除的.s文件?
因此,如果':='並不意味着「評估*」,它是如何從'='操作不同? – Ant6n
@ Ant6n嗨。查看更新。 –