önceki yanıt yanlış: Make için ()
ve {}
arasında hiçbir fark yoktur.
$$
bir tarifte kullanırsanız, o zaman $
"kaçtı" ve kabuğa iletilir. Kabuk daha sonra $()
veya ${}
arasında bir fark yaratabilir. Ama bu tamamen kabuğa kalmış ve Make veya makefiles ile ilgisi yok. Eğer
for dir in ${DIR}; do (cd $${dir}; ${MAKE}); done
Make alıntı tarifi komutta
yapar:
${DIR}
için DIR
değerini, değiştirir ve onu da $(DIR)
- cümledeki olabilirdi
$
ile $$
("kaçma", böylece $
kabuğuna geçirilebilir)
- ,
MAKE
değerini ${MAKE}
yerine, yine bu $(MAKE)
olabilir. MAKE
değeri, Make tarafından, kullanılmakta olan make yürütülebilir dosyasına otomatik olarak ayarlanır.
- , sonuç dizesini yürütme için kabuktan geçirir - kabuk daha sonra kalan bir
${}
istediği şekilde yorumlar. MAKE
benzer
CC
, bu bunu kendiniz ayarlamak dahi "çalışır" neden, işte bu varsayılan Make tarafından önceden tanımlanmış tarafından olan bu değişkenlerden biridir. Bu arada
, "hedefe" için bu tarifi yazmak için daha iyi bir yolu
.PHONY: $(DIR)
target: $(DIR)
$(DIR):
$(MAKE) -C [email protected]
belirsiz şeylerin açıklaması için kılavuzuna başvurun olduğunu.
Öyleyse neden CC tanımlanmadıysa bile çalışıyorlar? – AuA