Makefile komut çağırma yankısı bastırılsın mı?


147

Çıktılarını stdout'a basması gereken bir ödev için bir program yazdım. Atama özelliği, çağrıldığı zaman make run > outputFileprogramı çalıştırması ve çıktıyı spesifikasyonda verilenle aynı SHA1 parmak izi olan bir dosyaya yazması gereken bir Makefile oluşturulmasını gerektirir .

Benim sorunum benim makefile:

...
run:
     java myprogram

ayrıca programımı çalıştıran komutu (örn. java myprogram) çıktı dosyasına yazdırır, böylece dosyamda parmak izinin yanlış olmasına neden olan bu ekstra satır bulunur.

Komut çağrısı komut satırına yankılanmadan bir komut yürütmenin herhangi bir yolu var mı?

Yanıtlar:


247

@Gmake'ye yürütülen komutu yazdırmamasını bildirmek için komutun başına ekleyin . Bunun gibi:

run:
     @java myprogram

Oli'nun önerdiği gibi, bu Bash'ın değil Make'ın bir özelliğidir.

Öte yandan, Bash, açıkça (yani -xseçenekle) söylemediğiniz sürece, yürütülmekte olan komutları asla yankılamaz .


6
+1. Ama sadece OP'nin karışıklığını gidermek için, belki de bunun Bash'ın değil, Make'ın bir özelliği olduğunu açıklamaya değer.
Oliver Charlesworth

1
@OliCharlesworth: mantıklı, bunu ekledi. Teşekkürler.

Tüm ekoları devre dışı bırakmanın bir yolu var mı? Veya bir bölüm için kapatıp daha sonra tekrar açmak mı?
Benubird

2
@Benubird make -sbunu yapıyor ve IMHO zaten burada çok daha iyi bir çözüm. Son zamanlarda bu soruya ayrı bir cevap olarak gönderildi.
üçlü

1
Bu bir if için işe yaramazsa ... sonra ifade :( herhangi bir fikir?
user1623521

74

Daha da basit, make -s(sessiz mod) kullanın !


3
Olumlu oy: Bu gerçekten kabul edilen cevap olmalı. Makefile'inizi @komutlarla serpiştirmek hata ayıklamayı zorlaştırır ve çok fazla karmaşa ekler.
tripleee

11
Kabul etmenin yolunun bu olduğuna katılıyorum - ama dikkat edin, orijinal problem açıklamasında, çağıran tek kişi olmayacağım - eğitmenim olurdu. Böylece, geçen bayraklar üzerinde hiçbir kontrolüm olmazdı. Çıktıyı makefile içinden kontrol etmem gerekiyordu. Gerçi gerçek dünyadaki en pratik çözüm için oy verin.
noobler

6
.SILENT:Hedefi kullanarak bunu kendiniz kontrol edebilirsiniz . Bkz. Make.mad-scientist.net/managing-recipe-echoing
MadScientist

Aslında -Wallhala yazdırıyormuş gibi uyarılarınız varsa . Elbette -suyarıları da görmek istiyorsanız neden kullanasınız ki ?
Kullanıcı81862311

33

Ayrıca kullanabilirsiniz .SILENT

.SILENT: run
hi:
     echo "Hola!"
run:
     java myprogram

Bu durumda, make hikomut çıktı verir, ancak make runçıktı olmaz.


1

Komutun a'dan önce @gelmesinin etkisi, komutun satırda izleyen bir ters eğik çizgi kullanılarak genişletilerek bir bölüme genişletilebilir. .PHONYÇıktıyı bastırmak için bir komut isteniyorsa, bölüm aşağıdakilerle başlayabilir:

@printf "..."
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.