Skip to the content.

homepage

Makefile

自动编译,自动检测文件更新 依赖文件的修改时间若晚于目标文件,make时会重新编译,否则不会

Makefile:
  目标:依赖文件
    规则

通过make去执行makefile

生成目标文件:

main.o:main.c
gcc -c main.c -o main.o

add.o:add.c
gcc -c add.c -o add.o
……

==> 为每一个.c汇编成.o,$<表示此依赖队列里的第一个文件,生成相应的目标文件

%.o:%.c
  $(CC) -c $<  -o $@

最终的Makefile:

src=$(wildcard ./*.c)
objs = $(patsubst %.c,%.o,$(src))
target=app
$(target):$(objs)
  $(CC) $(objs) -o $(target)
%.o:%.c
  $(CC) -c $<  -o $@

.PHONY:clean
clean:
  rm $(objs) -f

make clean 会执行删除多余中间文件

但若存在一个命为clean的文件,由于clean没有依赖,认为是最新版本,不执行相关操作,因此要声明目标clean为假文件,与文件clean不做对比