《跟我一起写Makefile》读书笔记(2)
四、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)相关推荐
- 《ClickHouse原理解析与应用实践》读书笔记(7)
开始学习<ClickHouse原理解析与应用实践>,写博客作读书笔记. 本文全部内容都来自于书中内容,个人提炼. 第9章: <ClickHouse原理解析与应用实践>读书笔记( ...
- 《ClickHouse原理解析与应用实践》读书笔记(2)
开始学习<ClickHouse原理解析与应用实践>,写博客作读书笔记. 本文全部内容都来自于书中内容,个人提炼. 第一章 -> 第二章: <ClickHouse原理解析与应 ...
- 《ClickHouse原理解析与应用实践》读书笔记(1)
开始学习<ClickHouse原理解析与应用实践>,写博客作读书笔记. 本文全部内容都来自于书中内容,个人提炼. 前言和推荐 略过 第1章 ClickHouse的前世今生 跟ck没多大关系 ...
- ClickHouse原理解析与应用实践--摘录
一.ClickHouse的核心特性 1. 完备的DBMS功能 ClickHouse拥有完备的管理功能,所以它称得上是一个DBMS ( Database Management System,数据库管理系 ...
- clickhouse原理解析与应用实践_Hybrid App (混合应用) 技术全解析 方案原理篇
引言 随着 Web 技术和移动设备的快速发展,Hybrid 技术已经成为一种最主流最常见的方案.一套好的 Hybrid架构方案 能让 App 既能拥有极致的体验和性能,同时也能拥有 Web技术 灵活的 ...
- clickhouse原理解析与应用实践_编程好书推荐《Redis 深度历险:核心原理与应用实践》...
今天看到一本书,叫<Redis 深度历险:核心原理与应用实践>,作者叫钱文品(老钱),目前在掌阅科技出任资深开发工程师,这本书对redis的剖析还是挺深入的 对redis感兴趣的朋友可以买 ...
- clickhouse原理解析与应用实践 pdf_阿里专家分享内部绝密RocketMQ核心原理与最佳实践PDF...
前言 本文源码以RocketMQ 4.2.0 和 RocketMQ 4.3.0 为 基 础 , 从RocketMQ的实际使用到RocketMQ的源码分析,再到RocketMQ企业落地实践方案,逐步讲解 ...
- python基础学习[python编程从入门到实践读书笔记(连载一)]
写在前面:本文来自笔者关于<python编程从入门到实践>的读书笔记与动手实践记录. 程序员之禅 文章目录 02变量和简单数据类型 03 列表简介 04 操作列表 05 if语句 06 字 ...
- 推荐系统实践读书笔记-02利用用户行为数据
推荐系统实践读书笔记-02利用用户行为数据 为了让推荐结果符合用户口味,我们需要深入了解用户.如何才能了解一个人呢?<论语·公冶长>中说"听其言,观其行",也就是说可以 ...
- 推荐系统实践读书笔记-06利用社交网络数据
推荐系统实践读书笔记-06利用社交网络数据 自从搜索引擎谷歌诞生后,大家都在讨论互联网的下一个金矿是什么.现在,几乎所有的人都认为那就是社交网络.根据尼尔森2010年的报告,用户在互联网上22%的时间 ...
最新文章
- NLTK的图形化语料文本下载器downloader
- P1290 欧几里德的游戏
- 基于Flume的美团日志收集系统(一)架构和设计
- Java集合List,Set,Map,Queue,Deque
- 有1到100共100个数, 从1开始, 每隔1, 2, 3... 个数拿走一个数, 最后剩下几?(约瑟夫环)...
- 使用shell脚本实现二进制、十进制、十六进制转换
- CSS单行、多行文本溢出隐藏
- 苹果最新消息_最新消息称苹果延期举行发布会:iPhone 12或将于10月推出
- 【数据结构】单链表的创建、插入、删除及合并
- [转]GotW#63 狂乱的代码
- 使用Feed43为网页生成RSS订阅源
- 支付宝蚂蚁庄园线下支付链接,支付宝蚂蚁庄园线下支付地址
- 第三章:前端开发学习·第一篇:自主学习-无障碍设计
- vue 两种方式实现抽奖效果(九宫格、翻牌抽奖) -----(非TX游戏概率)
- MySQL基础练习题
- 人工智能概论教材_人工智能概论
- Arduino-IRremote-红外遥控器,发射与接收
- 软工产品调研分析(成员)
- 镇魔曲手游服务器维护,镇魔曲手游新闻资讯_《镇魔曲》手游4月12日更新维护公告_镇魔曲2.0季,不顾一切奔向你_《镇魔曲》手游官网...
- 高阻态是0还是1_依视路镜片如何选购?选A3镜片还是A4防蓝光镜片?
热门文章
- fastjson与spring mvc整合的配置
- Web项目替换jar包中的文件的方法
- 多态方法调用的解析和分派
- 【bzoj1010-toy】斜率优化入门模板
- 边工作边刷题:70天一遍leetcode: day 73
- jquery的$.extend、$.fn.extend、 jQuery.extend( target, object1, [objectN])作用及区别
- Python功能之反射
- android js调试
- C#中跨窗体操作(1)--事件
- 《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹