我提出两个解决方案。第一个模仿 NetBeans IDE 生成的内容:
CC=gcc
.PHONY: all clean
all: post-build
pre-build:
@echo PRE
post-build: main-build
@echo POST
main-build: pre-build
@$(MAKE) --no-print-directory target
target: $(OBJS)
$(CC) -o $@ $(OBJS)
clean:
rm -f $(OBJS) target
第二个灵感来自 Eclipse IDE 生成的内容:
CC=gcc
.PHONY: all clean
.SECONDARY: main-build
all: pre-build main-build
pre-build:
@echo PRE
post-build:
@echo POST
main-build: target
target: $(OBJS)
$(CC) -o $@ $(OBJS)
@$(MAKE) --no-print-directory post-build
clean:
rm -f $(OBJS) target
请注意,在第一个版本中,无论主构建是否确定为最新,始终都会调用前构建和后构建。
在第二个中,如果主构建的状态是最新的,则不执行构建后步骤。虽然预构建步骤始终在两者中执行。