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

前言

身处 linux 平台环境开发中的伙伴们都知道 gcc/g++ 编译器以及编译指令,但是不难想象在以后的生活或者工作中,肯定是有多文件编译的需求,少则数10个,多则上百也不是不可能。

那么我们难道就直接 gcc -o test t1 t2 t3 ..... t99 吗??显然是费力不讨好,毕竟还有一个 rm t1 t2 t3 ...... t99 等着你呢!

所以针对上述场景及其需求,该篇文章主要介绍的是在linux系统中项目自动化构建工具make以及其配置文件Makefile的相关内容。



我们先抛开一切原理及其设计理念,先见一见所谓的make以及Makefile,所谓 “没吃过猪肉,咱也得见一见猪跑吧~~”

# Makefile
test:test.cpp
	g++ -o test test.cpp
clean:
    rm -f test

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eb256ed177f14a4e89da9d1bcc4d3cb9.png

有了 Makefile 之后,我们只需要make 即可完成编译生成可执行程序,make clean 即可完成删除可执行程序。

1. Makefile 文件的基本构成

# Makefile
test:test.cpp
   g++ -o test test.cpp
clean:
   rm -f test

其中的 test:test.cpp 和 clean 我们称之为依赖关系,test 和 clean 下面带的指令我们称为依赖方法

这么一听似乎有点抽象。什么是依赖关系?什么是依赖方法?

打个比方,月底到了,作为大学生的张三生活费以及见底了,于是乎,他需要打电话给他的老爸,而接通电话的那一刻,张三即需要表面身份,即与他电话沟通的人的关系,即所谓的依赖关系。而张三表面完关系之后,需要表面其来电目的,即依赖方法。如果张三不表明依赖关系,他爸凭什么给他生活费?换言之,假设今天张三拨号给中国银行,让中国银行给予其生活费,中国银行会同意吗??道理很简单,因为张三与中国银行之间不存在依赖关系,因此,没有依赖关系的基础上,无法执行依赖方法(也即为张三来电的目的)。同理,假设张三拨号给他老爸,开头一句:”爸!“,然后马上把电话挂了,他爸知道他要干嘛吗??是不是显然不知道!因此,仅有依赖关系也不够,还需要有与该依赖关系对应匹配的依赖方法!

2. makefile的依赖关系的自动化推导

我们把 Makefile 文件改稍微复杂一点,如下:

test:test.o   			想要生成 test 可执行程序,需要先有 test.o 文件
	g++ test.o -o test    
test.o:test.s			想要生成 test.o 文件,需要先有 test.s 文件
	g++ -c test.s 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值