我有这个 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 $@ $^ -g -Wall -std=gnu99 -ldl -Wl,--export-dynamic
$(PLUGINS_DIR)/%.so: $(PLUGINS_DIR)/%.o
$(CC) $^ -o $@ -shared
$(PLUGINS_DIR)/%.o: $(PLUGINS_DIR)/%.c
$(CC) -c $< -o $@ -pedantic -g -Wall -std=c99 -fpic -I.
clean:
$(RM) -rf $(TARGET) *.o *.a $(PLUGINS_O) $(PLUGINS_SO)
但clean
仍在输出一条消息!( 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 中编写代码)
编辑:使用 make 4.0