2012-09-21 17 views
5

Ben n komutların bir listesi varsa, c cn = c1 ... , nasıl belirli bir hedef için bunları sırayla yürütebilirsiniz? Ben ForeachHer komutu bir listede nasıl uygularım?

$(foreach x,$(c),./$(x)) 

inşa çalıştı ama o tek bir satırda komutları koyar. Herhangi bir ipucu? başarı için kontrol etmeye gerek yoksa

+1

Yapmak istediğiniz gibi bir şey yapmak için böyle bir şey. – Flexo

cevap

8

(“ ama bu bir satırda ” tüm komutları koyar): Yerine doğrudan komutları yürütme, bir marka fonksiyonunda yürütülmesine sarın. Döngünüzde $x'u genişletdiğinizde yeni bir satır eklemeniz yeterlidir.

define \n 


endef 

Şimdi tarifinize sadece $(foreach x,$c,./$(x)${\n}) kullanın.

+0

Tamam, teşekkürler bobbogo! –

5

sonra ekleme noktalı virgül çalışması gerekir:

$(foreach x,$c,./$(x);) 

Listede komuta biri başarısızlık döndürürse başarısız gerekiyorsa, adımlarda kırmak gerekir . Sorunu tespit

define execute-command 
$(1) 

endef 

execute-list: 
     $(foreach x,$(c),$(call execute-command,./$(x))) 
+1

Her satırın genişlemesini bir sekmeyle önek yapmanıza gerek yoktur. _Make_, her satırın zaten sekmeden dolayı tarifte yeni bir komutu temsil ettiğini fark eder. – bobbogo

+0

@bobbogo - güzel, teşekkürler. Öneriniz için yanıtı basitleştirin. – FooF

İlgili konular