8
我嘗試在當前項目中實現非遞歸構建系統。我所面臨的是變量範圍。目標特定變量不適合我的需求,因爲變量常常定義目標而不是先決條件。 我需要的是:GNU Make。範圍限於單個Makefile的變量
Makefile1:
SOMEVAR := original_value
include Makefile2
$(warning $(SOMEVAR))
Makefile2:
#some magic here to do what I want and make me happy
SOMEVAR := included_value
#and maybe here
而且我想輸出是 'original_value'。
有什麼策略可以讓它變成現實嗎?
編輯:我來的那一刻唯一的解決辦法是強制和組織自己把所有inlcudes在每個特定Makefile結尾,並使用直接變量賦值:=
該解決方案聽起來不錯。它出什麼問題了?什麼是'SOMEVAR',它用於什麼? – Beta
在這個解決方案中,我不喜歡的是它非常不穩定。如果一個可以代替我的地方的可憐人不會得到這個想法,那麼他會得到很多驚喜 –
如果Makefile2被多次包含,並且它定義了一個指向'$(SOMEVAR)'的配方, ,那麼它就會崩潰 - 配方執行時會評估配方中的變量,這意味着它們都會看到'$(SOMEVAR)'的最後一個值,而不是配方定義時的值。 –