2012-08-14 18 views
11

Projemde her .c dosyasını derleyen bir makefile sahibim. Her dosya için, tüm seçenekler ve bayraklarla birlikte kabuğa basılan tüm derleme komutunu alıyorum. Bu, bir dosya, bir örnek çıktısı:GCC ve makefile: Sadece hataları ve uyarıları göster

kol hiçbiri EABI-gcc -c -mcpu = korteks m3 O0 -dm -g -gdwarf-2 -mthumb -fomit-çerçeve işaretçisi - fverbose-asm -Wa, -ahlms = src/sim/sim_configuration.lst -include ./lib/stm32core/stm32f2xx_conf.h -I. -I./lib/ARMStandardLibrary -I./lib/LwIP -I./lib/LwIP/src/include -I./lib/LwIP/src/include -I./lib/LwIP/src/include/ipv4 -I./lib/LwIP/src/include/ipv6 -I./lib/FatFS -I./lib/stm32core -I./src -I./src/sim -I./src/sd -I./ src/tftp src/sim/sim_configuration.c -o src/sim/sim_configuration.o

sorun çeşitli uyarılar komut çıkışlarının Bu karışıklığın içine kaybolmak olmasıdır. için sadece görüntülenmesi için uyarıların ve hataların yazdırılmasının bir yolu var mı ( orijinal komutu)?

cevap

6

Komutu sadece the @ symbol ile başlatın. Eğer built-in implicit rules güvenirse

, bunları açık yapmak zorunda ya, özel durumda, şunu kullanabilirsiniz:

.SILENT: *.o 

%.o hedeflere oluşturmak için kullanılan tüm komutlar susturmak için. Bir komutun önce

+4

(veya ek olarak) 'kullanılarak @' yapabileceğiniz MAKEFLAGS + = - sessizlik. Bu yerleşik kurallar için de işe yarayacak. – Idelic

+0

Evet, ama sonra ** her ** kuralındaki her ** komutu yankılanmayacaktır. – mrucci

+0

Her zaman olduğu gibi, bu bir ticaret kapalı, ancak yerleşik kuralları ele alır. Genelde, yerleşik kuralların açık olması çok kötü bir fikirdir, bu yüzden 'MAKEFLAGS' ayarı daha iyi bir yöntem olabilir. Ya da tabi ki değil. – Idelic

3

Kullanım @ gizlemek için:

rule1: 
    @gcc someting 
19

-s seçeneğiyle make yürütün. man page'dan.

-s, --silent, --quiet 
    Silent operation; do not print the commands as they are executed. 
4

Hep stderr tüm hataları ile bırakmalısınız hangi stdout tüm çıkışlarını filtre olabilir: Yerine

make 1>/dev/null 
İlgili konular