Makefile基础规则
target … : prerequisites …
command
…
- target:目标文件、可执行文件、标签等
- prerequisites:依赖文件
- command:执行命令
Makefile简单示例
Makefile通用化
自动推导
CXX=g++
CXXFLAGS=-Wall
objs=main.o
all: test
test: $(objs)
$(CXX) $(CXXFLAGS) $^ -o $@
%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $< -o $@
clean:
rm -rf test *.o
- $@:目标文件
- $^:所有的依赖文件
- $<:第一个依赖文件
Makefile变动更新
变动检测机制
make会比较targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的话,那么make就会执行后续定义的命令。