C语言makefile文件

文章目录

  • 一、makefile的编写
  • 二、make命令
  • 三、makefile文件中的变量

在软件的工程中的源文件是很多的,其按照类型、功能、模块分别放在若干个目录和文件中,哪些文件需要编译,那些文件需要后编译,那些文件需要重新编译,甚至进行更复杂的功能操作,这就有了我们的系统编译的工具。

在linux和unix中,有一个强大的实用程序,叫make,可以用它来管理多模块程序的编译和链接,直至生成可执行文件。

make程序需要一个编译规则说明文件,称为makefile,makefile文件中描述了整个软件工程的编译规则和各个文件之间的依赖关系。

makefile就像是一个shell脚本一样,其中可以执行操作系统的命令,它带来的好处就是我们能够实现“自动化编译”,一旦写好,只要一个make命令,整个软件功能就完全自动编译,提高了软件开发的效率。

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说大多数编译器都有这个命令,使用make可以是重新编译的次数达到最小化。

一、makefile的编写

makefile文件的规则可以非常复杂,比C程序还要复杂,我通过示例来介绍它的简单用法。

文件名:makefile,内容如下:

第一行

all: 这是固定的写法。

book1 book46表示需要编译目标程序的清单,中间用空格分隔开,如果清单很长,可以用换行。

第二行

makefile文件中的空行就像C程序中的空行一样,只是为了书写整洁,没有什么意义。

第三行

book1:表示需要编译的目标程序。

如果要编译目标程序book1,需要依赖源程序book1.c,当book1.c的内容发生了变化,执行make的时候就会重新编译book1。

第四行

这是一个编译命令,和在操作系统命令行输入的命令一样,但是要注意一个问题,在gcc之前要用tab键,看上去像8个空格,实际不是,一定要用tab,空格不行。

第六行

与第三行的含义相同。

book46:表示编译的目标程序。

如果要编译目标程序book46,需要依赖源程序book46.c、_public.h和_public.c三个文件,只要任何一个的内容发生了变化,执行make的时候就会重新编译book46。

第七行

与第四行的含义相同。

第九行

清除目标文件,清除的命令由第十行之后的脚本来执行。

第十行

清除目标文件的脚本命令,注意了,rm之前也是一个tab键,不是空格。

二、make命令

makefile准备好了,在命令提示符下执行make就可以编译makefile中all参数指定的目标文件。

程序make编译目标程序。

C语言makefile文件

因为全部的目标程序都是最新的,所以提示没有目标可以编译。

执行make clean,执行清除目标文件的指令。

C语言makefile文件

修改_public.c程序,随便改点什么,只要改了就行。

然后再make

C语言makefile文件

在makefile文件中,使用变量的好处有两个:1)如果在很多编译指令采用了变量,只要修改变量的值,就相当于修改全部的编译指令;2)把比较长的、公共的编译指令采用变量来表示,可以让makefile更简洁。

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树文件文件的基本操作113155 人正在系统学习中

来源:行孤、

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月22日
下一篇 2021年1月22日

相关推荐