【Linux】多文件标准工程目录的Makefile编写及通用模板

  在这里我们介绍多文件Makefile的编写,多文件标准工程目录的Makefile的编写及通用模板。

  以加、减、乘、除为基础建立一个小的计算器,源代码如下:

  主函数cal.c
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第1张图片

  加法add.c
  这里写图片描述

  减法sub.c
  这里写图片描述

  乘法mul.c
  这里写图片描述

  除法div.c
  这里写图片描述

一、多文件Makefile的编写
  利用“vim Makefile”打开Makefile编写页面。

  代码如下:
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第2张图片
                    图1

  从下图看到,开始只有“.c”文件,在编写完上图Makefile代码并执行了“make”之后,此时生成了目标文件和可执行文件,运行可执行文件,可以得到相应的结果。
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第3张图片

  还可以用“make clean”删除生成的目标文件和可执行文件,Makefile代码如下:
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第4张图片

  结果如下,可以看到在执行了“make clean”之后所有的目标文件和可执行文件都被删除了:
  这里写图片描述

  如果有多个源文件,再利用上述方法编写Makefile,容易遗漏或者是写错文件名,并且如果一个文件名被修改,会导致我们需要把代码中所有该文件名都修改掉,麻烦而且浪费时间。那么可以用变量代替文件名。将图1所示代码修改如下:
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第5张图片

  可以看到用变量和图1所示代码最后的结果是相同的,并且利用变量更加简洁方便: 【Linux】多文件标准工程目录的Makefile编写及通用模板_第6张图片

二、多文件标准工程目录的Makefile编写
  在上述多文件Makefile的编写中,我们将所有的源文件放在了一个目录里,如果有大量的源文件,将其放在一个目录里不利于管理,所以要按照不同的分类方法将其分别放在不同的目录里,而上述过程只能用于源文件在相同目录下,下面介绍源文件放在不同目录下的Makefile文件该如何编写。

  首先创建一个目录“cal”,并在目录里创建分别放加、减、乘、除和主函数的目录,同时创建一个“scripts”目录。分别将源代码放在相应的目录的src目录里:
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第7张图片

在这里就要首先提一下Makefile的类型,一共分为三类:
  ①总控Makefile:进入各个功能子目录里执行make命令,将所有的“.o”文件链接生成最终的可执行文件。
  ②功能子目录Makefile:将src(放源代码的目录)目录下的“.c”文件编译成“.o”文件。
  ③scripts目录的Makefile:定义许多变量(相当于C语言的头文件),提高make的灵活性和维护性。

  以下分别列出编写的三类Makefile的代码:

  scripts目录的Makefile:
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第8张图片

  总控Makefile:
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第9张图片

  功能子目录Makefile(每个功能子目录的Makefile的代码是一样的):
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第10张图片

  执行“make”后目录如下:
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第11张图片

  运行可执行文件之后,得到正确的结果。
  【Linux】多文件标准工程目录的Makefile编写及通用模板_第12张图片

  在这里,上述多文件标准工程目录的Makefile编写的三类Makefile可以作为一个模板,只需要在编写时修改部分内容即可。详情请关注下一篇文章《多文件标准工程目录的Makefile通用模板详解》。

你可能感兴趣的:(Linux)