Makefile的简单使用
MakeFile的简单使用
makefile具体来说就是很复杂,但简单理解就可以当做shell脚本来使,且是跨平台的脚本。
Makefile结构说明
Makefile里主要包含了五个东西:变量定义、显式规则、隐晦规则、文件指示和注释。
变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点像C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。
显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。 (脚本必备!)
隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。
文件指示。其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样。
注释。Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符。
简要教程
以一个C语言的编译运行为例:
1 |
|
要先用编译器处理一下,才能运行。
1 | gcc -o main.exe main.c |
此时是最简单的情况,如果程序更加复杂,我们该如何处理?
—- 使用makefile脚本!
基本使用
创建一个名为makefile的文件
1 | # 编译 运行 |
我们使用makefile文件将两个步骤合二为一,使用mingw32-make cmp
完成编译和运行。
需要注意的是,make命令与当前环境使用的C编译器有关!如果你用MinGW,你的make 叫 mingw32-make 如果你用MSVC,你的make叫 nmake ….
使用变量
1 | # 编译 运行 |
接收参数
只需在上述的基础上,改变运行命令的参数,就会覆盖makefile文件中的变量值。
1 | mingw32-make cmp in=main.c out=main.exe |
扩展应用
有了以上的概述,不止于编译连接运行。我们可以将makefile用做跨平台的shell脚本。
如:
1 | #新建删除文件 |
参考:
https://zhuanlan.zhihu.com/p/47390641
https://www.coonote.com/linux-note/makefile-simple-tutorial.html