目录

前言 1.1

Makefile简介 1.2

Makefile资料 1.3

Makefile实例 1.4

附录 1.5

参考资料 1.5.1

前言

自动化利器：Makefile

最新版本：v0.8

更新时间：20190530

简介

简介Makefile的特点和用途，并给出Makefile实例，以便给其他人以参考，如何利用Makefile去将繁琐人工操作变成自动化处理的一键搞定，从而提高工作效率。

源码+浏览+下载

本书的各种源码、在线浏览地址、多种格式文件下载如下：

Gitbook源码

crifan/good_automation_tool_makefile: 自动化利器：Makefile

如何使用此Gitbook源码去生成发布为电子书

详见：crifan/gitbook_template: demo how to use crifan gitbook template and demo

在线浏览

自动化利器：Makefile book.crifan.com

自动化利器：Makefile crifan.github.io

离线下载阅读

自动化利器：Makefile PDF

自动化利器：Makefile ePub

自动化利器：Makefile Mobi

版权说明

此电子书教程的全部内容，如无特别说明，均为本人原创和整理。其中部分内容参考自网络，均已备注了出处。如有发现侵犯您版权，请通过邮箱联系我 admin 艾特 crifan.com，我会尽快删除。谢谢合作。

鸣谢

感谢我的老婆陈雪的包容理解和悉心照料，才使得我crifan有更多精力去专注技术专研和整理归纳出这些电子书和技术教程，特此鸣谢。

更多其他电子书

本人crifan还写了其他100+本电子书教程，感兴趣可移步至：

crifan/crifan_ebook_readme: Crifan的电子书的使用说明

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-01-17 00:15:06

Makefile简介

Makefile简介

什么是Make和Makefile

make是一个脚本工具=script tool，一般（尤其是Linux类的系统中）也叫做命令=command

并且Linux类系统中的一般都已经内置安装了make

Makefile是一个文本文件，一般也叫做脚本=script

是自己，根据make的语法，写的，用于各种要做的事情，实现对应的功能

用法：当你输入了make命令后，make会去根据你写的Makefile中的规则去执行对应的动作

最典型的用途是，Linux系统中用make根据*.c去编译生成*.o目标文件

Makefile的用途和用法

类似于Makefile的工具，主要用于实现：

将：低效率的，需要手动的多个步骤输入多个命令，才能完成的工作

变成：每次只需要，高效率的，运行make命令去完成各种复杂的功能

当前，前提是，需要先写好对应的Makefile文件

即所谓的自动化脚本

目的是：提高工作效率

本人之前最早接触Makefile，是在嵌入式开发期间，有很多的系统、工具、软件，都需要利用makefile去编译、配置。

比如：Linux内核的make menuconfig后再去make编译

后来在移动互联网开发期间遇到makefile，更多的是：

将各种繁琐的人工要敲不同命令才能实现的功能，用makefile去实现一键搞定的效果

Makefile和其他自动化工具的区别

而自动化脚本，其他也有很多工具和软件可以实现，比如Linux中的shell等。而Makefile和shell等不同之处和侧重点是：主要根据文件依赖关系，主要用于文件编译。

而实际上可以利用文件依赖关系，去实现更广泛的、做事情的先后顺序有依赖关系，也可用Makefile去实现

比如自己的Crifan的Gitbook的模板中的Makefile，就是用makefile脚本是实现：

本地调试gitbook

编译出不同格式的文件

发布到服务器上

等等功能，其中内部利用了不同的步骤的先后依赖关系，实现自动化的效果的。

详见帖子

【已解决】提取Gitbook中Makefile公共部分

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2019-03-02 14:04:21

Makefile资料

Makefile资料

官网资料

所有的资料中，最推荐的就是官网，解释的最权威和清楚。

不过是英文的，有能力的可以优先参考：

GNU make: Top

其中关于很多功能的解释，比较权威和清楚。

自己之前参考过官网的部分资料

比如之前就参考过：

函数：GNU make: Functions

想要输出信息，除了info，还有error和warning：GNU make: Make Control Functions

$(error text…)
$(warning text…)
$(info text…)

网上不错的Makefile教程

如果习惯看中文文档的，推荐一个网上之前流传甚广的教程：《跟我一起写Makefile》

其也是我最早参考学习的一份Makefile资料。之前是pdf版本的，现在出来有在线电子版了：

概述 — 跟我一起写Makefile 1.0 文档

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2019-03-02 14:25:04

Makefile实例

Makefile实例

下面列举一些自己用到过的Makefile去提高工作效率的实际的例子：

Makefile中调用Python文件

【已解决】Makefile中运行Python脚本文件

Makefile中实现自定义函数

【已解决】Makefile中实现自己的函数并调用

自定义函数的一些注意事项

自定义函数内部的内置函数需要加上eval才能正常运行

详见：【已解决】Makefile中define的自定义函数中的lastword不工作

自定义函数开头不能是# xxx的注释，否则语法出错而无法运行

详见：【已解决】Makefile自定义函数调用出错：unterminated call to function notdir': missing)'. Stop

自定义函数中打印变量，echo无效，需要用info

详见：【已解决】Makefile中define自定义函数中打印输出没效果

自定义函数如何获取返回值

详见：【已解决】Makefile中如何获得define自定义函数的返回值

提取出gitbook中公共部分的Makefile

详见：【已解决】提取Gitbook中Makefile公共部分

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2019-03-02 14:22:53

附录

附录

下面列出相关参考资料。

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2019-03-02 13:50:27

参考资料

参考资料

【已解决】提取Gitbook中Makefile公共部分

【已解决】Makefile中运行Python脚本文件

【已解决】Makefile中实现自己的函数并调用

【已解决】Makefile中define的自定义函数中的lastword不工作

【已解决】Makefile自定义函数调用出错：unterminated call to function notdir': missing)'. Stop

【已解决】Makefile中define自定义函数中打印输出没效果

【已解决】Makefile中如何获得define自定义函数的返回值

GNU make: Top

GNU make: Functions

GNU make: Make Control Functions

概述 — 跟我一起写Makefile 1.0 文档

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2019-03-02 14:29:04