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
相关产品推荐
相关产品推荐

