我有一个使用 GNU Make 的 C++ 小项目。我希望能够打开以下源文件:
src/
a.cpp
b/
b.cpp
c/
c.cpp
进入以下输出结构(此时我不关心重复):
build/
a.o
b.o
c.o
到目前为止,我有以下内容,不幸的是,它把 .o 和 .d 放在每个 .cpp 旁边:
OBJS := $(foreach file,$(SRCS),$(file).o)
DEPS := $(patsubst %.o,%.d,$(OBJS))
sinclude $(DEPS)
$(OBJS) : %.o : %.cpp
@echo Compiling $<
$(CC) $(CC_FLAGS) $(INCS) -MMD -o $@ $<
我知道 $(notdir ...) 函数,但此时我使用它来过滤对象的努力失败了。任何人都可以对此有所了解吗?这似乎是相当合理的事情。