学习笔记之Makefile

来源:互联网 发布:服装零售进销存软件 编辑:程序博客网 时间:2024/04/28 12:05
Makefile :项目管理工具

只将与修改的源文件相关的 文件进行编译,其他的进行连接。

stat  test.c  :可以查看一个文件的修改时间

touch test.c :更新文件的时间

make -p >file
vi file             :  Makefile 内建规则查看

#阶段三

makefile 变量声明,使用变量

obj = add.c sub.c mul.c dive.c main.c
app: $(obj)
     gcc $(obj)  -o  app



$@表示目标,$^表示所以有的依赖, $< 表示依赖中的第一个

# 通用代码

src=$(wildcard *.c)  //找到当前目录下所有 .c文件; $表示索引()里边的函数
obj=$(patsubst %.c,%.o,$(src));
target=app;

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


目标:依赖

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


#clean 用来清除生成的中间文件和最终的目标文件
#伪文件clean,用来避免重名文件clean
# -rm 表示此条命令出错后继续执行后面的命令
# @   表示不显示命令,只显示结果

.PHONY:clean
clean:
     -rm -f *.o
     -rm -f app


#阶段四

参考文件  GNU Makefile

CPPFLAGS= -Iinclude   //include 是头文件目录,如果没有可以空着不写
CFLAGS= -g -Wall  //编译时的命令
LDFLAGS= -L../lib -    //共享库的路径,如果没有可以空着不写
CC=gcc            //编译器
#CC=arm-linux-gcc  //嵌入式

src=$(wildcard *.c)  //找到当前目录下所有 .c文件; $表示索引()里边的函数
obj=$(patsubst %.c,%.o,$(src));
target=app;

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

%.o :%.c
     $(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)

make -C src    //可以指定要进入的目录,然后调用目录里边的Makefile文件
0 0