Makefile

0 引言

Makefile 是代码管理工具。之所以需要Makefile是因为gcc/g++有可能会写很长很长,容易出错。所以有人提出了一种代码管理工具,Makefile,即可完成代码管理工具。

通常Makefile是架构师写的,每个人只需要完成自己的部分即可。当然,如果能够读一点Makefile我觉得也是很有用的。

1 编写规则

1.1 makefile 三要素

  a. 目标  b. 依赖  c. 命令

目标:依赖文件
  tab: 命令
version1:
app: main.c add.c sub.c mul.c
  gcc main.c add.c sub.c mul.c -o app
$ make # 执行Makefile中的命令
# 存在的问题:每次都得把所有的文件全部编译,造成时间浪费,进行修改得到version2
version2:
app:main.o add.o sub.o mul.o
    gcc main.o add.o sub.o mul.o -o app

main.o:main.c
    gcc -c main.c

add.o:add.c
    gcc -c add.c

mul.o:mul.c
    gcc -c mul.c

sub.o:sub.c
    gcc -c sub.c

# 如果有多条规则,默认第一条中的目标为终极目标
# 如果目标中涉及到的依赖没有,那么就继续访问Makefile找到其依赖生成的规则;通过向下检索,构建出一颗关系依赖树
# 这种方式可以将每个程序分开进行编译,提高了程序编译的效率;其原理是通过对比 *.c, *.o 的生成时间,来自动更新依赖树,实现只重新编译被修改过的文件,提高工作效率。

# 存在的问题:冗余

obj=main.o add.o sub.o mul.o
target=app
$(target):$(obj)
    gcc $(obj) -o $(target)
%.o:%.c
  gcc -c $< -o $@

 

 

 

 

 

 

 

posted @ 2020-06-21 23:20  十步一杀2017  阅读(188)  评论(0编辑  收藏  举报