make 的执行过程与条件判断

知识点

  • make 读取 makefile 文件并执行更新和重建操作
  • makefile 反斜线的使用
  • makefile 中条件语句的基本格式
  • makefile 关键字 ifeqifneqifdefifndef 的使用

代码获取

通过在 Terminal 中输入以下命令可以将本课程所涉及到的所有源代码下载到linux环境中,作为参照对比进行学习。

wget http://labfile.oss.aliyuncs.com/courses/849/make_example-master.zip && unzip make_example-master.zip && rm make_example-master.zip

命令执行后 WebIDE 的工作区中将会出现一个名为 make_example-master 的文件夹

本章节的源代码位于 /home/project/make_example-master/chapter3 目录下,请在 Terminal 中通过 cd 命令切换至该目录后再进行实验学习。


1️⃣ make 的两个执行阶段

编写 makefile 文件内容如下:

# this is a makefile example

vari_a = "vari a from makefile"
vari_b = "vari b from makefile"

.PHONY:all

all:
    @echo $(vari_a)
    @echo $(vari_b)

在 makefile 文件中我们定义了两个变量 vari_avari_b,同时我们在执行规则 all 时将他们的值打印输出,现在执行 make 命令,观察输出结果。

新增一个文件 inc_a,在文件中声明一个变量 vari_b 值为 「vari b from inc_a」。 提供的源代码中已有此文件,内容如下:

# this is a include file for make

vari_b = "vari b from inc_a"
复制代码

修改 makefile 文件,在文件的最后一行通过 includeinc_a 包含到 makefile 中。

include inc_a
复制代码

执行 make 命令观察输出结果。

可以发现 vari_b 的值被修改了。

我们知道 make 是按照顺序一行行读入 makefile。 前面介绍make第一阶段是读入所有 makefile 文件,include导入的文件以及环境变量指定的文件。所以解析新修改的 makefile 时,inc_a 应该在第一阶段被解析完毕,所以 vari_b 变量就被 inc_a 修改掉了。

由此说明文件的处理顺序与 include 指示符在 makefile 中的位置无关。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值