GCC学习 如何编写makefile

Posted linanwx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCC学习 如何编写makefile相关的知识,希望对你有一定的参考价值。

更多惊喜,请google“跟我一起写Makefile”

本文是该makefile教程的简明版

 

  • makefile 基本格式 :

--------------------------

要生成的文件:依赖的文件

    实际命令

--------------------------

执行make时,实际上生成的是第一个文件中要生成的文件,但是第一个要生成的文件,有依赖文件,所以就会继续寻找下一个要生成的文件

make命令是一个递归的过程,本身不包含gcc的过程

 

  • 命令

如果冒号:后面没有依赖,则这是一个命令,使用make + 命令来执行

-----------

命令:

    实际命令

-----------

该命令常见且只见于 clean

 

make的递归性质作用是为了方便多次编译,因为如果递归到一个文件,该文件已经修改过了,或者该文件不存在,则执行命令,否则不执行命令,节省花在gcc上时间

 

  • 变量声明

-------

Name = thing

Name := thing

-------

使用变量时,用$(Name),变量不是全部大写,表示只在该文件内有效

 

  • 隐晦规则

一般,abc.o文件肯定依赖abc.c,所以在写基本格式中,依赖就不用写某c文件了,这就是隐晦规则

  • 包含

和c一样,使用include <a.mk>包含

 

  • 这样,就可以明白makefile的工作过程(伪)了

1.将所有include展开

2.将所有变量初始化

3.将所有隐晦规则展开

4.将所有依赖关系展开

5.根据依赖关系,找到变动过得文件,重新生成

6.根据生成的文件,编译和链接

 

实际过程中,makefile并不马上展开,而是拖延到生成文件的时候再展开,当然是为了节省时间

 

  • 通配符

通配符有三种

1. 波浪线~,等效$HOME

2. 星号*,指的是任意匹配符

3. 问号?,任意 至少一个

 

  • 文件搜索

缺省路径 VPATH , 用法:

----

VPATH = 路径1:路径2:路径3

----

依赖文件的目录找不到,尝试到这个目录下找

 

待更新

以上是关于GCC学习 如何编写makefile的主要内容,如果未能解决你的问题,请参考以下文章

GCC学习 如何编写makefile

如何编写makefile

单文件夹下的C程序如何编写Makefile文件

如何编写带有目标“错误”的makefile?

小型C/C++项目的makefile编写

linux中用C语言编写完模块后怎么编写makefile文件?用到啥命令?以啥格式编写?