Итак, у меня есть рекурсивный make-файл, который находится в проекте, но по какой-то причине AR является единственной командой, которая все еще печатает вывод.Тихий make-файл не работает
Как я могу заставить его молчать? Он уже «@» в начале, и я не хочу передавать вывод в нуль.
Как я называю этот make-файл?
@cd libc; make clean --no-print-directory
Вот нарушителем Makefile:
include ../Makefile.inc
LIB=../libc.a
SOURCES=$(wildcard *.c)
SOURCES_ASM=$(wildcard asm/*.asm)
OBJECTS=$(SOURCES:.c=.o)
OBJECTS_ASM=$(SOURCES_ASM:.asm=.o)
all: $(LIB)
@echo -e " libC [ \033[0;32mOK \033[0m]"
$(LIB): $(OBJECTS) $(OBJECTS_ASM)
@$(AR) $(ARFLAGS) -c $(LIB) $(OBJECTS_ASM) $(OBJECTS)
$(OBJECTS): $(SOURCES)
$(OBJECTS_ASM): $(SOURCES_ASM)
%.o: %.c
@$(GCC) $(GCCFLAGS) -c $< -o [email protected]
%.o: %.asm
@$(ASM) $(ASMFLAGS) $< -o [email protected]
clean:
@rm -rf *.o ../*.a
.PHONY:
all clean
и вот результат:
a - asm/syscall.o
a - syscall.o
a - string.o
a - stdio.o
a - integer.o
libC [ OK ]
Заранее спасибо
'@' просто предотвращает 'make' от печати команды перед ее выполнением. Он ничего не делает о выходе из самой команды. – melpomene
О, глупо меня. Есть ли способ перенаправить stdout на null, но только его часть и не все? – Juan
Проведите его в программу, которая выбирает, что проглотить и что передать на стандартный вывод. Например. если это строки с определенными шаблонами, которые вы хотите сохранить, 'grep' является очевидным выбором. – melpomene