2009-09-29 14 views

cevap

16

qmake, bir sessiz yapılandırma seçeneğini ekleyebilirsiniz:

CONFIG += silent 

(not:.. Ben komut olduğunu düşünüyorum Şuna benzer bir şey) çıkışının en bastırmak gerekir

, ve sadece uyarılar ve hatalar ile birlikte "derleme" gibi baskı hatları. Bunun make'un .SILENT. yönergesine benzediğine inanıyorum (bence bu bir ...)

Hata ayrıştırıcılarının kullanmaktan hoşlandığı pek çok bilgiyi bastırdığı için buna dikkat etmek isteyebilirsiniz. Örneğin, bir SUBDIRS yapılandırması ile derliyorsanız, farklı dizinlere değiştiğinde yazdırılmaz.

+0

harika. tam olarak ihtiyacım olan şey –

0

yılında

$(CC) in.ext -o out.ext 

sayesinde gibi bir şey düşünüyorum Sen ile '@' çıktı bastırmak ve görmek istediğini yankı:

Basit Örnek:

out.ext: $(OBJ) 
    @echo $(CC) -o out.ext 
    @$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC) 
+0

Uh sihrini ve sadece qmake içinde yapmak istiyorum. Karışıklık için özür dilerim. –

+1

OP Qmake için sordu –

5

Farklı yaklaşımlar vardır. Bunları yapılandırılabilir hale getirebilirsiniz.

  • kural dahilinde çizgisi önünde @ işareti eklemek Eğer komut kendisi basılacak olmaz, ancak çıkış olacak. Eğer CFLAGS değişkene -Werror eklemek Eğer
  • (sen yok, bir tane var mı Yaygın bir uygulamadır?!), kesinlikle herhangi bir uyarı kaçırmayacaksınız - inşa ilkinden sonra duracaktır.
  • Sen (gcc genellikle çıktıyı verir vermez ancak diğer komutlar için yararlı olabilir, çünkü bu, size bu durumun değildir) sadece hata akımını bırakarak /dev/null için komutunuzun standart çıktısını yönlendirebilirsiniz.

Ne yazık ki, qmake için yalnızca ikinci yaklaşım geçerlidir. Proje dosyasına ekleyin:

QMAKE_CFLAGS+=-Werror 
QMAKE_CXXFLAGS+=-Werror 

Ve inşa her uyarı duracaktır böylece bu bayrakları kullanacak oluşturulan makefiles onlar, derleyici çağırmak zaman.


(bu bölüm en kısa zamanda bir tek görünen başka bir soru taşınacak).

Her zamanki gibi her şeyi kullanabilirsiniz - hepsini yapılandırılabilir hale getirebilirsiniz! İşte örnek:

trace?=short 

ifeq ($(trace),short) 
    [email protected] 
    redirect_to_null=1>/dev/null 

else ifeq ($(trace),full) 
    suppress_echo= 
    redirect_to_null= 

else ifeq ($(trace),werror) 
    CFLAGS+=-Werror 

else 
    $(error Incorrect trace type "$(trace)"!) 
endif 

# Thanks to Martin York for the source of this copy-pasted code 
out.ext: $(OBJ) 
    @echo $(CC) $(CFLAGS) -o out.ext $(redirect_to_null) 
    $(suppress_echo)$(CC) $(CFLAGS) -o out.ext $(OBJ) $(redirect_to_null) 

Yani, böyle make çağırmak durumunda: her şeyi yazdırılır

$ make trace=full 

. Eğer short değer varsayılan olarak kullanılacak

$ make 

çağırmak durumunda

out.ext: out.o 
    @echo cc -o out.ext 1>/dev/null 
    @cc -o out.ext out.o 1>/dev/null 
sizin kadar

verecektir Ne (! alışılmış = ait ?= operatörü dikkat edin) ve kurallar böyle sürüme genişleyecektir gerekir.

Yapılandırma ile bu tür bir yaklaşım, üretim kodunda kullanılır.Örneğin, Ubuntu'nun IcedTea maketlerinde gördüm.

+0

Uh Sadece sihir yapmak istiyorum ve sadece qmake içinde. Karışıklık için özür dilerim. –

+0

+1: -Werror. Bu en iyi öneri IMO ve bu _can_ proje dosyanızda yapılabilir. – Troubadour

+0

@hydroes: Yardımınız için gerekli cevabınızı yerine getirmeye çalışın –

İlgili konular