makefile - 在 GNU makefile 中使用依赖项
问题描述
我对如何在我的 GNU makefile 中使用依赖项有疑问。
考虑以下 make 文件:
// Building all my dependency files
$(OUTDIR)/%.dep: %.c
$(DPP) $(CPPFLAGS) $(DPPFLAGS) $(@:dep=o) $< $@
现在,我有这些依赖文件,其中包含指向文件/依赖项的列表或“指针”。
然后,我想根据这些依赖项(当它们更改时)创建我的目标文件。
我可以做以下事情:
$(OUTDIR)/%.o $(OUTDIR)/%.orc: %.c $(OUTDIR)/%.dep
$(AS) $(COMMONFLAGS) $(CPPFLAGS) $(ASFLAGS) -o $@ $<
然而,这是否意味着我将仅在我的 *.dep 文件实际更改(而不是那些依赖文件中列出的文件)时重建我的对象。这是正确的做法吗?如果不是,那是什么?
我觉得我没有使用/理解这些依赖文件是如何被工具解释的。
解决方案
依赖文件本身是 makefile 格式,并且是 make 的输入,而不是 gcc。要使用它们,您需要将它们包含在您的 makefile 中(如果该文件尚未创建,则忽略该文件):
-include $(wildcard *.dep)
唯一需要注意的是,它会在需要构建任何内容时构建 dep 文件,包括“make clean”,因此您需要使包含条件以目标为条件:
ifneq ($(MAKECMDGOALS),clean)
-include $(wildcard *.dep)
endif
推荐阅读
- spring - JPA 春季刷新问题
- javascript - 为什么属性似乎被还原了?
- audio - 带音频输入的 Raspberry Pi 替代品
- javascript - jquery用可排序的方式拖动多个表行
- c - 有没有办法可以防止 C 中的 EOF?
- python-3.x - 在 Python FastAPI 中缓存上传的图像以将其上传到雪花
- r - 对包含积分的函数进行积分
- excel - 使用 PowerShell 从 Excel 中读取带有 % 的值
- java - 如何使用 openapi-generator-maven-plugin 生成没有属性的基本模型类
- flutter - Flutter,如何从对象列表中创建 json?