您的位置:首页 > 其它

01_Makefile文件编写

2017-06-08 09:43 344 查看
Makefile文件

格式:
#目标:依赖(即条件)
#   命令

/*注意一:我们通常在make时候,直接就是执行第一条目标,但是可以指定执行的目标。例如:make clean , make app等*/

/*阶段一:
注释:这是最粗略的版本*/
#app:add.c sub.c dive.c mul.c main.c
#   gcc add.c sub.c dive.c mul.c main.c -o app

/*阶段二:
注释:改进,有时候我们在make时不想要更新已存在的文件,只想要更新改动过的文件,根据第一阶段的makefile文件,我们的所有依赖项都会重新编译,这很浪费时间。但是通过下面阶段二的写法,分别编译依赖项,可以只更新我们更改过的文件,提高效率。*/
#app:add.o sub.o dive.o mul.o main.o
#   gcc add.o sub.o dive.o mul.o main.o -o app

#add.o:add.c
#   gcc -c add.c
#sub.o:sub.c
#   gcc -c sub.c
#dive.o:dive.c
#   gcc -c dive.c
#mul.o:mul.c
#   gcc -c mul.c
#main.o:main.c
#   gcc -c main.c

/*阶段三:
注释:makefile也有很多的环境变量,使用这些环境变量,可以使我们更加专业化。*/
# $@表示目标,$^表示所有依赖,$<表示依赖中的第一个
#obj=add.o sub.o mul.o dive.o main.o
#src = $(wildcard *.c) //获取当前目录下所有.c文件名
#obj = $(patsubst %.c,%.o,$(src))//将.c文件名换成.o文件名
#target = app

#$(target):$(obj)
#   gcc $^ -o $@

#%.o:%.c
#   gcc -c $< -o $@

/*伪目标:避免和同名文件冲突,改善性能。*/
#阶段四
CPPFLAGS= -Iinclude
CFLAGS= -g -Wall
LDFLAGS=
CC=gcc
#CC=arm-linux-gcc

src = $(wildcard *.c)
obj = $(patsubst %.c,%.o,$(src)) /*obj=$(src:.c=.o)等同*/
target = app

$(target):$(obj)
$(CC) $^ $(LDFLAGS) -o $@

%.o:%.c /*.c.o:等同*/
$(CC) -c $< $(CFLAGS) $(CPPFLAGS) -o $@

.PHONY:clean

#彻底清除生生过程文件
clean:
-rm -f *.o
-rm -f app

#彻底清除生生过程文件和生成配置文件
distclean:
rm /usr/bin/app
install:
cp app  /usr/bin

test:
@echo $(src) /*取消回显*/
@echo $(obj)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: