Yanıtlar:
"Çıktıda bu komutu yankılama" anlamına gelir. Yani bu kural "shell komutunu çalıştır :
ve çıktıyı yankılama " diyor .
Tabii ki kabuk komutu :
bir op-op, bu yüzden bu "hiçbir şey yapma ve söyleme" diyor.
Neden?
Buradaki hile, iki farklı sözdiziminin belirsiz bir kombinasyonuna sahip olmanızdır. Marka (1) söz dizimi komutu yankı için basitçe @ ile başlayan bir eylem kullanılmasıdır. Yani bir kural
always:
@echo this always happens
yaymayacak
echo this always happens
this always happens
Şimdi, bir kuralın eylem kısmı dahil herhangi bir kabuk komutu olabilir :
. Bash yardımı bunu her yerde olduğu gibi açıklar:
$ help :
:: :
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
@:
(sadece @
) referans olarak soruyorsanız o zaman @ guestolio'nun cevabına ek olarak, aynı zamanda gelişimden kalan bir saplama da olabilir. Bu sadece Python'da bir fonksiyon yazmak gibi pass
. Kopyala / yapıştır için kod bloklarını saplamak için yararlı olabilir, ancak genellikle uzun süre mevcut olmamalıdır. Bu şekilde stubbing yaparken dosya hala derlenir, lintingi geçirir, vb.
Bunu neden yapabileceğinizi merak edenler için, bir şeyin yapıldığı gibi davranmak istiyorsanız faydalıdır, böylece Make hedefinize "Yapılacak hiçbir şey" vermez.
Bunun bir örneği, her zaman yürüttüğünüz bir sahte hedefiniz varsa ve içinde komutta bir grup koşul vardır. Bu koşulların yanlış olması ve hiçbir şey yapılmaması durumunda en azından bir şey istersiniz.
Örneğin (Linux'un komut dosyalarından / Makefile.clean):
__clean: $(subdir-ymn)
ifneq ($(strip $(__clean-files)),)
+$(call cmd,clean)
endif
ifneq ($(strip $(__clean-dirs)),)
+$(call cmd,cleandir)
endif
ifneq ($(strip $(clean-rule)),)
+$(clean-rule)
endif
@: