Linux项目自动化构建工具:make/makefile

一、makefile的基本使用

创建一个名称为makefile的文件,使用vim编辑器在该文件中写入依赖关系和依赖方法

//第一对依赖关系和依赖方法
test1.exe:test1.c//依赖关系
     gcc test1.c -o test1.exe//依赖方法

 //第二对依赖关系和依赖方法
 .PHONY: clean
 clean://依赖关系
     rm -rf test1.exe//依赖方法

在依赖关系中,冒号前面的是目标文件,冒号后面的是依赖文件列表

目标文件是依赖于依赖文件的,依赖文件可以为空;也可以有多个依赖文件,用空格分隔

.PHONY作用:表明该依赖关系对应的依赖方法总是要被执行的,不会被拦截

makefile文件创建好后,直接使用make调用,默认调用的是第一个目标文件对应的依赖方法,如果调用其他目标文件,则需要使用make + 目标文件名 

个人理解:依赖关系就是函数名和参数列表;依赖方法就是函数体

二、makefile的原理

以下列代码为例

hello:hello.o 
    gcc hello.o -o hello 
hello.o:hello.s 
    gcc -c hello.s -o hello.o 
hello.s:hello.i 
    gcc -S hello.i -o hello.s 
hello.i:hello.c 
    gcc -E hello.c -o hello.i
  • 默认情况下,直接调用make,在当前目录下找到名为makefile/Makefile的文件
  • 找到文件中的第一个目标文件,即hello,将这个文件作为最终的目标文件
  • 如果hello不存在(或者hello依赖的文件hello.o修改时间比hello新),则执行其依赖方法生成hello文件
  • 如果hello依赖的文件hello.o不存在,则在makefile文件中找到hello.o目标文件,执行其以来方法生成hello.o文件
  • 如果hello.o依赖的hello.i文件也不存在,同样是按照上面的流程一层一层地寻找依赖关系,直到最终生成第一个目标文件
  • 在找寻依赖关系的过程中,如果出现错误(例如某个依赖文件找不到),则make会直接退出并报错

三、makefile补充使用

src=test.c #定义变量src代表依赖文件
bin=test.exe #定义变量bin代表最终目标文件
$(bin):$(src) #$可以取出变量指向的文件
     @gcc $^ -o $@ #$^表示取出所有依赖文件;$@表示取出最终目标文件
 
 .PHONY:clean
 clean:
     @rm -rf $(bin) #$(bin)表示取出最终目标文件

#在依赖方法前加上 @ 调用make时就不显示依赖方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南林yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值