Makefile的简单规则与介绍
Makefile:
1 .make 工程(项目)管理命令行工具。
Makefile 指定编译的规则 ,the make of file
2.Makefile的编写
a. 规则的编写
目标文件名:依赖文件名
<TAB>命令
执行Makefile文件中的内容:
make make默认执行第一条规则
make命令查找的文件makefile ,Makefile
make -f 文件名
b.Makefile中使用变量
1.变量的定义
变量名 赋值符号 对应的值
Compile = arm-linux-gcc
2.变量的使用
$(变量名) $(Compile)
3.赋值符号
递归赋值 = 从后往前找
追加赋值 += 保存文件名、编译参数 -g
简单赋值 := 保存文件名
条件赋值 ?= 编译器的名字
4.预定义变量
$+ 所有的依赖文件名以空格分开 包含重复
$^ 所有的依赖文件名以空格分开 不包含重复
$< 第一个依赖文件
$@ 规则中目标文件名
$* 目标文件名但是不包含扩展名
简单的makefile(根据变量的使用,可以拓展):
Makefile:
main:main.c hello.c
gcc main.c hello.c -o main
makefile万能模板:
TARGET := finger_test
CSRCS := $(wildcard *.c) #找通配规则为 *.c 的所有文件名 BTree.c linkQueue.c main.c
OBJS := $(patsubst %.c, %.o, $(CSRCS)) #BTree.o linkQueue.o main.o
LIBS +=-l -L #指定使用的库和库的路径
CC := arm-linux-gcc
CFLAGS += -I #指定头文件的路径
$(TARGET): $(OBJS)
$(CC) -o $@ $+ $(CFLAGS) $(LIBS)
cp $(TARGET) /home/gec/tftp
%.o:%.c
$(CC) -c $< -o $@ $(CFLAGS)
clean:
rm $(TARGET) $(OBJS)
自己喜欢弄的模板:
#编译规则
COMPILE := gcc
#目标名
TARGET_NAME := ble
#依赖名.c
Depend_NAME := ble.c
#追加名
Add_NAME := -lbluetooth
$(TARGET_NAME): $(Depend_NAME)
$(COMPILE) $(Depend_NAME) -o $(TARGET_NAME) $(Add_NAME)
clean:
rm $(TARGET_NAME)