我試圖建立一個GNU讓Canned Recipe,就像這樣:爲什麼我不能建立在GNU的變量使「定義」指令
define this-will-fail
my_var=1
$(info your variable is $(my_var))
endef
$(this-will-fail)
這將導致一個錯誤*** missing separator. Stop.
然而,以下按預期工作:
define why-does-this-work
$(eval my_var=1)
$(info your variable is $(my_var))
endef
$(why-does-this-work)
印刷your variable is 1
。
我正在查看AOSP's build system,並經常看到eval
與define
搭配使用的用法。這兩個項目之間有什麼關係,爲什麼在使用define
時爲什麼不能「正常」創建變量?
罐裝配方文件片段,而不是Make(實際上,Make context中的「recipe」這個詞總是意味着「規則的shell代碼部分」)。 –
@MichaelLivshin謝謝,那是我需要清除所有混亂的珍聞。如果您想將其作爲「答案」發佈,我會很樂意接受 – Hamy