【发布时间】:2017-07-09 17:54:31
【问题描述】:
我有以下 Makefile(简化为忽略不相关的东西):
BUILD_DIR=./build
OBJS = \
$(BUILD_DIR)/main.o \
$(BUILD_DIR)/common.o \
...
roo: $(OBJS)
$(CXX) -o $@ $(OBJS) $(LFLAGS)
.PHONY: $(BUILD_DIR)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)/passes
$(BUILD_DIR)/%.o: src/%.cpp $(BUILD_DIR)
$(CXX) -o $@ -c $< $(CFLAGS)
但是,每个目标文件每次都会重新编译,即使我遵循规则在每个非假目标中直接使用 $@。
我不认为这是 this 的重复,因为我在规则中而不是在配方中应用子目录,但我可能错了吗?如何让 Make 正确跟踪构建目录中的依赖关系?
【问题讨论】: