一些编写Makefile的常用套路

2024-03-17

列出src目录中的所有的*.c文件:

SRC = $(shell find src/ -name '*.c')

列出src目录中的所有*.c文件,但是不包括main.c:

SRC = $(shell find src/ -name '*.c' -not -name 'main.c')

列出所有*.c文件对应的*.o文件:

OBJ = $(SRC:.c=.o)

把所有*.c文件编译成*.o文件并生成头文件的依赖关系(*.d文件):

$(OBJ):%.o:%.c
	$(CC) -c $(CFLAGS) $< -MD -MF $@.d -o $@

把依赖关系加入到Makefile中,以便于头文件有修改时自动重新编译:

DEPS := $(shell find . -name *.d)

ifneq ($(DEPS),)
include $(DEPS)
endif


Email: i (at) mistivia (dot) com