我試圖理解GNU make的多行define
指令,但我不能。例如:GNU make中的多行定義
define A
1
2
endef
all:
@echo W=$(word 1,$(A))
運行make
產生一個結果我期望的最小:
W=1
make: 2: Command not found
make: *** [all] Error 127
似乎的$(A)
那部分具有$(word)
功能外溢出。
這是一個錯誤或預期的行爲?如果「泄漏」是故意的,它是如何起作用的?
P.S. Linux/x64上的GNU make v3.81
我不是詢問'$(word)'函數。我要求解釋'make:2:Command not found'錯誤信息。我對如何/爲什麼「2」出現在函數外面並進入make的執行流程感興趣。這是我所問的問題。 – Dummy00001
您問過「$(A)'的部分溢出$(word)函數外部」。我只是回答了這個問題......雖然我現在看到答案沒有在我寫的內容中得到充分解釋(儘管它在那裏)。等一下。 –
不,這不是一個真正的答案。這基本上是官方(主題模糊)文件的推斷,根本沒有解決含糊不清的問題。我開始認爲這只是實現多行定義時的一個錯誤。例如,嘗試在'echo'命令的末尾添加分號並查看錯誤消息的更改方式。 (如果在Linux下,使用'strace -ff -e execve'運行以查看它的所有榮耀中的廢話。) – Dummy00001