您可以-s
通过设置 MAKEFLAGS 将命令行参数设置为 makefile 本身。除非您明确打印,否则不会打印任何内容,因此我使用以下 makefile 来回显调用的命令。
MAKEFLAGS += -s
PROJECT = progname
CC = g++
SDIR = src
ODIR = obj
BDIR = bin
IDIR = include
OBJS = $(patsubst $(SDIR)/%.cc,$(ODIR)/%.o,$(wildcard $(SDIR)/*.cc))
.PHONY: all debug clean
all: $(BDIR)/$(PROJECT)
debug: CFLAGS += -g -Wall -Wextra
debug: all
$(BDIR)/$(PROJECT): $(OBJS)
@mkdir -p $(BDIR)
@echo LINKING $<
@$(CC) -o $@ $(OBJS) -I$(IDIR)
$(ODIR)/%.o: $(SDIR)/%.cc
@mkdir -p $(ODIR)
@echo "COMPILING $<"
@$(CC) -o $@ -c $< $(CFLAGS)
clean:
@echo "CLEAN"
@rm -rf $(BDIR) $(ODIR)
删除 MAKEFLAGS 变量将打印所有调用的命令。Makefile 编译任何将源文件(扩展名为 .cc)放入src
目录并将头文件放入目录的 c++ 项目include
。