首页 > 代码库 > 2Makefile

2Makefile



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 = http://www.mamicode.com/$(wildcard *.c)

#下面的意思是将所有的.c文件替换成为.o文件

obj = $(patsubst %.c,%.o,$(src))

target = app

 

#程序最终编译成app,依赖$(obj),而需要执行的命令是紧接着的下面一句,$^表示所有的依赖,$@表示要生成的目标,这句的目标是$(target),也就是app文件

$(target):$(obj)

        $(CC)S^ $(LDFLAGS) -o $@

 

#$<表示一个的编译成目标文件$@

%.o:%.c

        $(CC)-c $< $(CFLAGS) $(CPPFLAGS) -o $@

 

#通过这种方式避免和当前已存在的clean文件冲突,下面声明的是一个伪目标

.PHONY:clean

 

#彻底清除生成过程文件

clean:

        -rm-f *.o

        -rm-f app

#彻底清除过程文件和生成配置文件

distclean:

        rm/usr/bin/app

install:

        cpapp /usr/bin

 

 

2Makefile