Makefile学习笔记——01第一个makefile

什么是make,为什么需要make?

还记得我们在linux下编译程序吗?比如编译c语言程序时,需要使用命令进行编译:

gcc main.c

那么问题来了,假如工程项目中有成百上千个项目,使用命令行来进行编译,那得要输入多少源文件的名字啊!如果真的这样做,那就太麻烦太低效了。因此大型项目会使用makefile来对源文件进行编译和管理。

make是一个应用程序

仅仅只有是makefile就能管理和编译源文件吗?显然不能,makefile只是一个文件,需要make解释器这个应用程序,去解析makeflie文件,并执行文件中描述的操作。

makefile的作用:

解析源程序之间的依赖关系:

例如,使用命令gcc -o hello.out main.c func.c,才能生成可执行文件hello.out。整个过程需要先有main.cfunc.c文件。如果没有这两个文件,则hello.out无法生成。因此hello.out依赖于func.c main.c,而hello.out则是此次编译动作的目标。

根据依赖关系自动维护编译工作:

使用makefie当然是为了方便快捷地编译程序了,根据makefie的依赖关系,我们只需要执行make命令后,make解释器就能根据makefile描述文件完成编译操作了。

执行宿主操作系统中的各种命令:

在编译期间,可能要完成文件的拷贝,例如把编译生成的中间文件全部移动到同一个文件夹,在ubuntu下就必须使用mkdir命令创建文件夹,使用mv命令移动文件。

makefile是一个描述文件

定义一系列的规则来指定源文件编译的先后顺序。

我们知道,编译一个程序,需要经过预处理、编译、汇编、链接这几个过程。在这个过程中,要先生成.s、.o等中间文件,才能生成最终的可执行文件,整个过程是有一定的先后顺序的。

用于特定的语法规则,支持函数定义和函数调用。

makefile的本质是一种脚本语言,而一种语言必然是有一定的语法规则的。

能够直接集成操作系统中的各种命令。

在makefile下,能够使用宿主操作系统下的各种命令,例如在ubuntu下,能够直接使用echo、rm、mv等命令。

make和makefile之间的关系

makefie中的描述用于指导makefie完成工作。
make根据makefile中的规则命令,最后完成编译输出。

最简单的Makefile

makefile语句的基本组成如下:

目标 : 依赖 ; 命令1
[\t]	命令2

目标:一般是需要生成的可执行文件.out或者编译过程中所需要的中间文件.o
依赖:生成目标所需要的文件,例如生成main.o需要main.c这个文件。
命令:实现目标所需执行的命令
注意:目标的命令需要tab键(\t)。

经过上面的了解,我们先来完成一个最简单的makefile吧。新建一个名为mf.txt的文件,编写的内容如下:

hello:
	echo "hello makefile"

编写完成后,在mf.txt所在的目录下打开终端,输入下面的内容即可执行makefile。输入命令后,make解释器会以hello关键字作为目标查找mf.txt文件,并执行文件中hello处的命令。

make -f mf.txt hello

makefile更简单的使用方法:我们将上面的mf.txt的文件名改为Makefile,之后输入下面的命令,make解释器会直接找到当前目录下名为Makefile的文件,并执行文件中hello处的命令。

make hello

makefile最简单的使用方法:直接输入make,make解释器会直接找到makefile最顶层的规则去执行。

make
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值