1关于Makefile,在编写Makefile的时候,Makefile这个名称第一个字母要大写。并且必须是Makefile.一个Makefile就相当于:
#目标:依赖(条件)
#
命令
à注意这里前面是一个tab
2案例:
A:创建一个项目calc,案例项目结构如下:
B编写mul.c
C编写sub.c
D编写add.c
E编写dive.c
F编写main.c
G编写common.h
3.编写Makefile
阶段1
阶段2
阶段3:
运行结果:
#阶段4
#定义变量,下面一句表示指定头文件所在的位置加载头文件,-l头文件包名
CPPFLAGS = -Iinclude
#加上-g表示调试模式,通过它可以看到源代码,在项目发布的时候去掉-g,-Wall严格编译
CFLAGS = -g -Wall
LDFLAGS=
#表示使用
CC=gcc
#表示如果是arm下,gcc可能是下面这个编译器
#CC=arm-linux-gcc
#$(wildcard *.c)表示当前目录下的所有.c文件
src = $(wildcard *.c)
#下面的意思是将所有的.c文件替换成为.o文件
obj = $(patsubst %.c,%.o,$(src))
target = app
#程序最终编译成app,依赖$(obj),而需要执行的命令是紧接着的下面一句,$^表示所有的依赖,[email protected]表示要生成的目标,这句的目标是$(target),也就是app文件
$(target):$(obj)
$(CC)S^ $(LDFLAGS) -o [email protected]
#$<表示一个的编译成目标文件[email protected]
%.o:%.c
$(CC)-c $< $(CFLAGS) $(CPPFLAGS) -o [email protected]
#通过这种方式避免和当前已存在的clean文件冲突,下面声明的是一个伪目标
.PHONY:clean
#彻底清除生成过程文件
clean:
-rm-f *.o
-rm-f app
#彻底清除过程文件和生成配置文件
distclean:
rm/usr/bin/app
install:
cpapp /usr/bin