2010-06-03 17 views
19

Jądro Linuxa (i wiele innych projektów, w tym git) ma bardzo ładne pliki makefile, które ukrywają gigantyczne wywołania cc w miłych akronimach.pretty print makefiles

Na przykład:

gcc -O2 -o cool.o cool.c -llib 
gcc -O2 -o neat.o neat.c -llib 

staną:

CC cool.c 
CC neat.c 

który jest naprawdę ładny, jeśli masz projekt z dużą liczbą plików i długich flag kompilatora. Przypominam, że miało to związek z tłumieniem domyślnego wyjścia i tworzeniem niestandardowego. Jak ty to robisz?

Odpowiedz

23

Możesz dodawać @ do połączeń w docelowych plikach Makefile.

Np .:

%.o: %.c 
    @$(CC) $(CFLAGS) -c -o [email protected] $< 
    @echo "CC $<" 
+0

niesamowite! dokładnie to, czego potrzebowałem! – wickedchicken

+8

Plik Makefile jądra Linux pozwala ci zdecydować, czy wyświetlić komendę kompilacji, czy nie (co może być przydatne podczas debugowania). Warunkowo ustawiają 'Q = @', a następnie zapisują polecenie jako '$ (Q) $ (CC) ...'. Teraz możesz ustawić polecenie, ustawiając 'Q =' –