跟我一起写 Makefile (重制版)

                                                           申明

       因为发现网上陈皓的<<跟我一起写 Makefile>>Makefile相关很全面的中文资料,但流传的该文档中出现了部分笔误且没有目录。

      因此本文主要目地是在对该文档重制,排版并在部分位置做了少量调整,对部分资料进行了补充以便后面的读者能更方便的阅读。

 

 下载地址:点击打开链接


 

作者 MSN haoel@hotmail.com
作者 QQ  :753640
 
文档维护:  GMAIL: xiyanxiyan10@gmail.com



更新记录:


2014/03/19 :   1.排版   2.加入了sed命令

2014/03/20: 1.加入了双冒号的说明




目录列表

目录 1

申明 3

概述 5

第一章 预备知识 6

1.1程序的编译和链接 6

1.2 GNU 知识补充 6

1.3 常用shell命令补充 7

1.3.1. Sed 7

第二章 Makefile 14

2.1 Makefile 介绍 14

2.1.1概述 14

2.1.2 Makefile的规则 14

2.1.3 make是如何工作的 16

2.1.4make自动推导 18

2.1.5另类风格的makefile 18

2.1.6清空目标文件的规则 19

2.2 Makefile里有什么? 19

2.2.1 Makefile的文件名 20

2.2.2引用其它的Makefile 20

2.2.3环境变量 MAKEFILES 21

2.2.4 make的工作方式 21

2.2.5书写规则 22

2.2.6 在规则中使用通配符 23

2.2.7文件搜寻 24

2.2.8 伪目标 25

2.2.9 多目标 27

2.2.10 静态模式 27

2.2.11自动生成依赖性 29

2.3书写命令 31

2.3.1显示命令 31

2.3.2命令执行 32

2.3.3命令出错 32

2.3.4嵌套执行make 33

2.3.5定义命令包 35

2.3.6使用变量 36

2.3.7使用条件判断 45

2.3.8使用函数 48

2.4 make 的运行 57

2.5隐含规则 64

2.6 使用make更新函数库文件 76

第三章 参考资料 79

第四章 作者后序 80


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
什么是 makefile?或许很多 Winodws 的程序员都不知道这个东西,因为那些 Windows 的集成开 发环境(integrated development environment,IDE)都为你做了这个工作,但我觉得要作一个好的 和专业的程序员,makefile 还是要懂。这就好像现在有这么多的 HTML 编辑器,但如果你想成为一个专 业人士,你还是要了解 HTML 的标签的含义。特别在 Unix 下的软件编译,你就不能不自己 makefile 了,会不会 makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile 关系到了整个工程的编译规则。一个工程中的源文件不计其数,并且按类型、功能、 模块分别放在若干个目录中,makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需 要后编译,哪些文件需要新编译,甚至于进行更复杂的功能操作,因为 makefile 就像一个 Shell 脚 本一样,其中也可以执行操作系统的命令。 makefile 带来的好处就是——“自动化编译”,一旦好,只需要一个 make 命令,整个工程完全 自动编译,极大的提高了软件开发的效率。make 是一个命令工具,是一个解释 makefile 中指令的命令 工具,一般来说,大多数的 IDE 都有这个命令,比如:Delphi 的 make,Visual C++ 的 nmake,Linux 下 GNU 的 make。可见,makefile 都成为了一种在工程方面的编译方法。 现在讲述如何 makefile 的文章比较少,这是我想这篇文章的原因。当然,不同产商的 make 各不相同,也有不同的语法,但其本质都是在“文件依赖性”上做文章,这里,我仅对 GNU 的 make 进 行讲述,我的环境是 RedHat Linux 8.0,make 的版本是 3.80。毕竟,这个 make 是应用最为广泛的, 也是用得最多的。而且其还是最遵循于 IEEE 1003.2-1992 标准的(POSIX.2)。 在这篇文档中,将以 C/C++ 的源码作为基础,所以必然涉及一些关于 C/C++ 的编译的知识。关于 这方面的内容,还请各位查看相关的编译器的文档。这里所默认的编译器是 UNIX 下的 GCC 和 CC。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值