码迷,mamicode.com
首页 > 其他好文 > 详细

2Makefile

时间:2014-09-21 01:30:39      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   使用   ar   文件   2014   div   sp   



1关于Makefile,在编写Makefile的时候,Makefile这个名称第一个字母要大写。并且必须是Makefile.一个Makefile就相当于:

#目标:依赖(条件)

#       命令     à注意这里前面是一个tab

2案例:

A:创建一个项目calc,案例项目结构如下:

bubuko.com,布布扣

B编写mul.c

bubuko.com,布布扣

C编写sub.c

bubuko.com,布布扣

D编写add.c

bubuko.com,布布扣

E编写dive.c

bubuko.com,布布扣

F编写main.c

bubuko.com,布布扣

G编写common.h

bubuko.com,布布扣

3.编写Makefile

阶段1

bubuko.com,布布扣

阶段2

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

阶段3

bubuko.com,布布扣

运行结果:

bubuko.com,布布扣

#阶段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),而需要执行的命令是紧接着的下面一句,$^表示所有的依赖,$@表示要生成的目标,这句的目标是$(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

标签:style   blog   http   使用   ar   文件   2014   div   sp   

原文地址:http://blog.csdn.net/tototuzuoquan/article/details/39437953

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!