我使用Makefile编译一个C项目,它按预期的方式工作:当我在一个源文件中更改一件事时,整个事情都会重建。我很确定问题就在那里:
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@echo -n 'Compiling $@ ... '
$(CC) $(CFLAGS) -c $(patsubst obj/%.o, src/%.c, $@) -o $@
但是,我明确指定了一个文件作为依赖项,即当前正在构建的文件。这怎么会成为问题? 感谢。
答案 0 :(得分:0)
关于make文件中的此代码:
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@echo -n 'Compiling $@ ... '
$(CC) $(CFLAGS) -c $(patsubst obj/%.o, src/%.c, $@) -o $@
这将创建所有* .o文件
你真正想要的是:
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@echo -n 'Compiling $@ ... '
$(CC) $(CFLAGS) -c $< -o $@
答案 1 :(得分:0)
好吧我解决了这个,这是一个愚蠢的。
SRC_DIR被定义为:
SRC_DIR = src
最后有一个空格......将其移除,立即工作。我的坏......