You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile:为多个可执行文件添加单个*.h头文件依赖

为多可执行文件Makefile添加全局头文件依赖

先还原一下你的需求场景:

目前存在许多针对多可执行文件的Makefile示例,经过多次尝试后,我找到了如下最简示例:

CC = gcc
SOURCES = $(wildcard *.c)
EXECS = $(SOURCES:%.c=%)
.PHONY: all clean
all: $(EXECS)
clean: rm -f $(EXECS)

但我未找到为所有这些程序添加单个include.h依赖的简易示例,恳请各位提供相关实现方案。

针对这个需求,@MadScientist提供的方案简洁且精准,修改后的完整Makefile如下:

CC = gcc
SOURCES = $(wildcard *.c)
EXECS = $(SOURCES:%.c=%)
.PHONY: all clean
all: $(EXECS)
# 新增这一行,将include.h设为所有可执行文件的公共依赖
$(EXECS): include.h
clean: rm -f $(EXECS)

核心逻辑解释:

  • $(EXECS): include.h 是Makefile的多目标依赖语法,它表示$(EXECS)变量里的每一个可执行文件(也就是当前目录下所有.c编译出的程序),都依赖include.h这个头文件。
  • 当include.h的内容发生修改时,Make会自动检查每个可执行文件对应的.c源文件,触发所有相关程序的重新编译——因为每个可执行文件的完整依赖链变成了「xxx.c + include.h」,完全满足你要给所有程序绑定同一个头文件依赖的需求。

可选优化小细节:

如果不想让clean目标执行时在终端打印rm命令,可以在命令前加@,修改后如下:

clean:
	@rm -f $(EXECS)

内容的提问来源于stack exchange,提问作者user13509658

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:33:11