2015-11-22 101 views
2

我在Makefile中有一些動態命名的變量。這一切工作,並沒有問題。 現在我需要引用一些這些變量在for循環中,但我似乎無法找到正確的語法:Makefile'for'變量作爲動態變量名

@for module in $(MODULES); do \ 
    (echo $(SRC_$$module)); \ 
done 

每個$(MODULE)是需要被追加到$一個名稱( SRC_ ..例如$(SRC_foo)$(SRC_bar)...但我似乎無法使用此語法來做到這一點

+0

那麼你能否提出一種替代解決方案?我怎樣才能建立一個清單,然後呢?對於每個$(MODULES)獲得$(SRC _ $$模塊))並從中列出一個列表。 – Keyframe

+0

'$(的foreach模塊,$(模塊),\ \t $(的foreach CFile的,$(SRC _ $(模塊)),\ \t \t $(殼回聲 「$(CFile的)」)\ \t)\ )'出於某種原因,這不會循環$(MODULES) – Keyframe

回答

3

您有擴展時間問題您無法動態擴展生成級別變量一旦殼已經開始運行,你在這裏試圖做什麼

你可以在make time或shell時間擴展變量,但不能同時使用這兩個變量。

要在製作時擴展所有內容,您可以使用類似這樣的內容。

@$(foreach module,$(MODULES),$(foreach cfile,$(SRC_$(module)),echo '[$(cfile)]';)) 

在殼時間展開是可能的,但有點混亂/棘手。

+0

你可能已經留下了評論,這沒關係!不過謝謝你! – Keyframe