【发布时间】:2017-12-04 16:45:04
【问题描述】:
我打算保留我所有的 *.o 文件 build/obj 并拥有源文件 src/src.c log/log.c
OBJECTS=build/log.o build/src.o
$(OBJ_DIR)/%.o : src/%.c log/%.c
$(CC) $(CFLAGS) $(DEFINE) $(INCLUDE) -o$@ $<
但它没有将 *.o 映射到正确的 *.c 我做错了什么?
【问题讨论】:
-
$(OBJDIR)/%.o : src/%.c ,当有一个文件夹时有效。但我想从多个文件夹映射到 c 文件
-
您可以使用
VPATH执行此操作。 (见here)。我不是VPATH的忠实粉丝,因为它让我们更难弄清楚makefile 在做什么,但它可以满足您的需求。 -
我试过 VPATH, VPATH = src:log ,它对我不起作用,第一个文件构建下一个没有。添加 VPATH 时,我将先决条件修改为 %.c
-
我想再添加一件事,这有效(它将.o正确映射到.c)"$(addprefix $(SRC_DIR)/,%.c)" 当只有一个src文件夹和多个c文件在源文件夹中
-
嗯。您必须使用 vpath 发布您的 makefile。我刚试过,它对我有用。我会在答案中发布我的...