gpt4 book ai didi

makefile - 如何管理C头文件依赖?

转载 作者:行者123 更新时间:2023-12-04 05:55:03 35 4
gpt4 key购买 nike

我有很多 C 文件,有些有 header (.h),有些文件没有。

这是我的生成文件:

.SUFFIXES: 

SRC := $(wildard ./src/*.c)
OBJ := $(SRC:%.c=%.o)

all: $(OBJ)

%.o: %.c
$(MyNotGCCCompiler) "@../$(*F).cmd"

它工作正常,除了如果我更改头文件,目标不会重新编译,因为它不包含在依赖项中。

我该如何处理这个案例?

谢谢

最佳答案

标准方法是在编译时自动生成头文件依赖。

第一次编译不需要任何依赖,因为每个源文件都必须编译。后续的重新编译加载先前编译生成的依赖项以确定需要重新编译的内容。

您的 $(MyNotGCCCompiler) 可能有一个命令行选项来生成依赖文件。

当使用 gcc 时,它是这样工作的:

.SUFFIXES: 

SRC := $(wildard ./src/*.c)
OBJ := $(SRC:%.c=%.o)
DEP := $(OBJ:%.o=%.d)

all: $(OBJ)

# when compiling produce a .d file as well
%.o: %.c
gcc -c -o $@ $(CPPFLAGS) $(CFLAGS) -MD -MP -MF ${@:.o=.d} $<

# don't fail on missing .d files
# there won't be any on the first run
-include $(DEP)

关于makefile - 如何管理C头文件依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9598595/

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