makefile 就是为了软件工程的自动化编译, 日常进行软件工程时,随软件的增删改,应当减少人为的修改makefile文件,所以应该增强makefile的鲁棒性, makefile的 模式思维,就比较的重要 .应用举例 :
多目标编译:
(1) 对源文件严重依赖:
all: test test1
.PHONY: test test1
test:test.c
gcc -o $@ $<
test1:test1.c
gcc -o $@ $<
.PHONY:clean
clean:
rm -rf test test1
(2) 采用模型思维 方式编写:
SOURCES := $(wildcard *.c)
TARGETS := $(patsubst %.c, %, $(SOURCES))
OBJS := $(patsubst %.c, %.o, $(SOURCES))
CC := gcc
HIDE := @
RM := rm
all:$(TARGETS)
$(TARGETS): %:%.o
$(HIDE) $(CC) $< -o $@
$(OBJS): %.o:%.c
$(HIDE) $(CC) -c $< -o $@
.PHONY:clean
clean:
$(HIDE) $(RM) -rf $(OBJS) $(TARGETS)
采用模式思维构建makefile的时候, 在同一个源码工程模式下, 不随源文件的改变,而需要修改makefile文件.(makefile的这种模型思维很重要)