У меня есть этот Makefile:Makefile игнорируя @ беззвучный выход
CC = @gcc
RM = @rm
TARGET = test
PLUGINS_DIR = plugins
PLUGINS_C = $(wildcard $(PLUGINS_DIR)/*.c)
PLUGINS_O = $(patsubst %.c,%.o, $(PLUGINS_C))
PLUGINS_SO = $(patsubst %.c,%.so, $(PLUGINS_C))
.PHONY: plugins
new: clean all
all: $(TARGET) $(PLUGINS_SO)
$(TARGET): $(TARGET).o
$(CC) -o [email protected] $^ -g -Wall -std=gnu99 -ldl -Wl,--export-dynamic
$(PLUGINS_DIR)/%.so: $(PLUGINS_DIR)/%.o
$(CC) $^ -o [email protected] -shared
$(PLUGINS_DIR)/%.o: $(PLUGINS_DIR)/%.c
$(CC) -c $< -o [email protected] -pedantic -g -Wall -std=c99 -fpic -I.
clean:
$(RM) -rf $(TARGET) *.o *.a $(PLUGINS_O) $(PLUGINS_SO)
но clean
все еще outputing сообщение! (rm plugins/tt.o plugins/kk.o
) Если удалить @
перед rm
тогда я получаю еще одно сообщение, кроме первого: rm -rf test *.o *.a plugins/kk.o plugins/tt.o plugins/kk.so plugins/tt.so
Как я могу сделать make
полностью бесшумную? (Пожалуйста, не make
выключатели, только код внутри Makefile)
EDIT: Использование не делают 4.0
Я не получаю сообщения с Makefile , (GNU make 3,81) –
@OlafDietsche I'm on make 4.0 – alexandernst
Что rm файлов .o делает удаление промежуточных файлов. Не работает ваша команда rm. Вам нужно сказать, чтобы не делать этого, чтобы избежать этого сообщения. См. Ответ MadScientist о том, как это сделать. Другой способ использования .PRECIOUS. –