Makefile文件名字需要是Makefile或者makefile.
管理一个项目工程,实质上就是管理项目文件间的依赖关系,当工程复杂度再上一个台阶的时候,会觉得手写 Makefile 也很麻烦,那个时候可以用 CMake、autotools 等工具来帮忙生成 Makefile。
# 定义变量
TARGET = hello_main
CC = gcc
CFLAGS = -I. #指定头文件路径
DEPS = hello_func.h
OBJS = hello_main.o hello_func.o
# 目标文件
$(TARGET): $(OBJS)
$(CC) -o $@ $^ $(CFLAGS)
#*.o 文件的生成规则
%.o: %.c $(DEPS) #依赖文件有头文件后,头文件修改make也会更新
$(CC) -c -o $@ $< $(CFLAGS)
# 伪目标
.PHONY: clean
clean:
rm -f *.o hello_main
符号 意义
$@ 匹配目标文件
$% 与 $@ 类似,但 $% 仅匹配“库”类型的目标文件
$< 依赖中的第一个目标文件
$^ 所有的依赖目标,如果依赖中有重复的,只保留一份
$+ 所有的依赖目标,即使依赖中有重复的也原样保留
$? 所有比目标要新的依赖目标
网友评论