四、Makefile综述

1、makefile里有什么?

Makefile 里主要包含五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。

(1)在 Makefile 中我们要定义一系列的变量,变量一般都是字符串;这个有点像C语言中的宏,当 Makefile 被执行时,其中的变量都会被扩展到相应的引用位置上。

(2)文件指示,包括三个部分

  • 一个是在一个 Makefile 中引用另一个 Makefile,就像 C 语言中的include 一样;
  • 另一个是指根据某些情况指定 Makefile 中的有效部分,就像 C 语言中的预编译#if 一样;
  • 还有就是定义一个多行的命令。

(3)注释

  • Makefile 中只有行注释,和 UNIX 的 Shell 脚本一样,其注释是用“#”字符。
  • 如果要使用“#”字符,可以用反斜框进行转义,如:“\#”。

2、makefile的文件名

(1)默认的情况下,make 命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件;

(2)大多数的 make 都支持“makefile”和“Makefile”这两种默认文件名;

(3)可以使用别的文件名来书写 Makefile,比如 : “ Make.Linux” ,“Make.Solaris”,“Make.AIX”等。

  • 如果要指定特定的 Makefile,你可以使用 make 的“-f”和“--file”参数,如:make -f Make.Linux 或 make --file Make.AIX。

3、引用其他Makefile文件

(1)例子如:(这里可以有空字符)include  foo.make  *.mk   $(bar)

(2)细节注意

  • 被包含的文件会原模原样的放在当前文件的包含位置;
  • 在 include前面可以有一些空字符,但是绝不能是[Tab]键开始;
  • include和文件之间,可以用一个或多个空格隔开。

4、环境变量MAKEFILES

(1)如果你的当前环境中定义了环境变量 MAKEFILES,那么,make 会把这个变量中的值做一个类似于 include 的动作。

(2)它和 include不同的是,从这个环境变中引入的 Makefile 的“目标”不会起作用,如果环境变量中定义的文件发现错误,make 也会不理。

(3)这个变量中的值是其它的 Makefile,用空格分隔。

(4)建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用 make 时, 所有的 Makefile 都会受到它的影响。

5、Makefile的工作方式

(1)读入所有的 Makefile;

(2)读入被 include 的其它 Makefile;

(3)初始化文件中的变量;

(4)推导隐晦规则,并分析所有规则;

(5)为所有的目标文件创建依赖关系链;

(6)根据依赖关系,决定哪些目标要重新生成;

(7)执行生成命令。

《跟我一起写Makefile》读书笔记(2)相关推荐

  1. 《ClickHouse原理解析与应用实践》读书笔记(7)

    开始学习<ClickHouse原理解析与应用实践>,写博客作读书笔记. 本文全部内容都来自于书中内容,个人提炼. 第9章: <ClickHouse原理解析与应用实践>读书笔记( ...

  2. 《ClickHouse原理解析与应用实践》读书笔记(2)

    开始学习<ClickHouse原理解析与应用实践>,写博客作读书笔记. 本文全部内容都来自于书中内容,个人提炼. 第一章  ->  第二章: <ClickHouse原理解析与应 ...

  3. 《ClickHouse原理解析与应用实践》读书笔记(1)

    开始学习<ClickHouse原理解析与应用实践>,写博客作读书笔记. 本文全部内容都来自于书中内容,个人提炼. 前言和推荐 略过 第1章 ClickHouse的前世今生 跟ck没多大关系 ...

  4. ClickHouse原理解析与应用实践--摘录

    一.ClickHouse的核心特性 1. 完备的DBMS功能 ClickHouse拥有完备的管理功能,所以它称得上是一个DBMS ( Database Management System,数据库管理系 ...

  5. clickhouse原理解析与应用实践_Hybrid App (混合应用) 技术全解析 方案原理篇

    引言 随着 Web 技术和移动设备的快速发展,Hybrid 技术已经成为一种最主流最常见的方案.一套好的 Hybrid架构方案 能让 App 既能拥有极致的体验和性能,同时也能拥有 Web技术 灵活的 ...

  6. clickhouse原理解析与应用实践_编程好书推荐《Redis 深度历险:核心原理与应用实践》...

    今天看到一本书,叫<Redis 深度历险:核心原理与应用实践>,作者叫钱文品(老钱),目前在掌阅科技出任资深开发工程师,这本书对redis的剖析还是挺深入的 对redis感兴趣的朋友可以买 ...

  7. clickhouse原理解析与应用实践 pdf_阿里专家分享内部绝密RocketMQ核心原理与最佳实践PDF...

    前言 本文源码以RocketMQ 4.2.0 和 RocketMQ 4.3.0 为 基 础 , 从RocketMQ的实际使用到RocketMQ的源码分析,再到RocketMQ企业落地实践方案,逐步讲解 ...

  8. python基础学习[python编程从入门到实践读书笔记(连载一)]

    写在前面:本文来自笔者关于<python编程从入门到实践>的读书笔记与动手实践记录. 程序员之禅 文章目录 02变量和简单数据类型 03 列表简介 04 操作列表 05 if语句 06 字 ...

  9. 推荐系统实践读书笔记-02利用用户行为数据

    推荐系统实践读书笔记-02利用用户行为数据 为了让推荐结果符合用户口味,我们需要深入了解用户.如何才能了解一个人呢?<论语·公冶长>中说"听其言,观其行",也就是说可以 ...

  10. 推荐系统实践读书笔记-06利用社交网络数据

    推荐系统实践读书笔记-06利用社交网络数据 自从搜索引擎谷歌诞生后,大家都在讨论互联网的下一个金矿是什么.现在,几乎所有的人都认为那就是社交网络.根据尼尔森2010年的报告,用户在互联网上22%的时间 ...

最新文章

  1. NLTK的图形化语料文本下载器downloader
  2. P1290 欧几里德的游戏
  3. 基于Flume的美团日志收集系统(一)架构和设计
  4. Java集合List,Set,Map,Queue,Deque
  5. 有1到100共100个数, 从1开始, 每隔1, 2, 3... 个数拿走一个数, 最后剩下几?(约瑟夫环)...
  6. 使用shell脚本实现二进制、十进制、十六进制转换
  7. CSS单行、多行文本溢出隐藏
  8. 苹果最新消息_最新消息称苹果延期举行发布会:iPhone 12或将于10月推出
  9. 【数据结构】单链表的创建、插入、删除及合并
  10. [转]GotW#63 狂乱的代码
  11. 使用Feed43为网页生成RSS订阅源
  12. 支付宝蚂蚁庄园线下支付链接,支付宝蚂蚁庄园线下支付地址
  13. 第三章:前端开发学习·第一篇:自主学习-无障碍设计
  14. vue 两种方式实现抽奖效果(九宫格、翻牌抽奖) -----(非TX游戏概率)
  15. MySQL基础练习题
  16. 人工智能概论教材_人工智能概论
  17. Arduino-IRremote-红外遥控器,发射与接收
  18. 软工产品调研分析(成员)
  19. 镇魔曲手游服务器维护,镇魔曲手游新闻资讯_《镇魔曲》手游4月12日更新维护公告_镇魔曲2.0季,不顾一切奔向你_《镇魔曲》手游官网...
  20. 高阻态是0还是1_依视路镜片如何选购?选A3镜片还是A4防蓝光镜片?

热门文章

  1. fastjson与spring mvc整合的配置
  2. Web项目替换jar包中的文件的方法
  3. 多态方法调用的解析和分派
  4. 【bzoj1010-toy】斜率优化入门模板
  5. 边工作边刷题:70天一遍leetcode: day 73
  6. jquery的$.extend、$.fn.extend、 jQuery.extend( target, object1, [objectN])作用及区别
  7. Python功能之反射
  8. android js调试
  9. C#中跨窗体操作(1)--事件
  10. 《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹