gpt4 book ai didi

c - 当只有一个源发生变化时,Makefile 会重建所有对象

转载 作者:行者123 更新时间:2023-11-30 17:05:09 26 4
gpt4 key购买 nike

我使用 Makefile 编译一个 C 项目,它按预期工作,除了一部分:当我更改一个源文件中的一件事时,整个事情都会重建。我很确定问题就在那里:

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@echo -n 'Compiling $@ ... '
$(CC) $(CFLAGS) -c $(patsubst obj/%.o, src/%.c, $@) -o $@

但是,我明确指定了一个文件作为依赖项,即当前正在构建的文件。这怎么会成为问题呢?谢谢。

最佳答案

关于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 $@

关于c - 当只有一个源发生变化时,Makefile 会重建所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com