Makefile学习连载---介绍4

本文详细介绍了Makefile中的命令书写,包括显示与隐藏命令、命令执行、错误处理、嵌套make以及命令包的定义。通过实例展示了如何控制命令的显示、执行顺序,以及如何处理命令出错的情况。此外,还探讨了如何在Makefile中进行子目录管理,通过export传递变量,并定义可复用的命令序列。
摘要由CSDN通过智能技术生成

系列文章目录

第一章 MAKEFILE基础介绍

第二章 MAKEFILE书写规则



三、Makefile书写命令

第一章请移步这里

3.1 显示命令

  • 通常make会把其要执行的命令行在命令执行前输出到屏幕上。当我们用 @ 字符在命令行前,那么,这个命令将不会显示(打印)出来,示例如下:
@echo make all: libmse.a

此时当执行make时,终端会输出make all: libmse.a 但不会输出命令,如果没有“@”,那么,make将输出:

make all: libmse.a
.... ...
  • 如果make执行时,带入make参数 -n--just-print ,那么其**只显示命令,但不会执行命令,**利用这个功能可以帮助我们调试我们的Makefile,可以看到我们书写的命令是执行起来是什么样子的或是什么顺序的。

  • make参数 -s--silent--quiet 则是全面禁止命令的显示。

再次提醒,在Makefile中的命令,如果换行,必须要以 Tab 键开始。


3.2 命令执行

  • 当当规则的目标需要被更新时,make会一条一条的执行其后的命令。需要注意的是,如果你要让上一条命令的结果应用在下一条命令时,你应该使用分号分隔这两条命令。这里有点类似于shell指令中的|管道符,比如第一条命令是cd命令,我们希望第二条命令得在cd之后的基础上运行,那么就不能把这两条命令分别写在两行上,而应该把这两条命令写在一行上,用分号分隔。示例如下:
【1】
exec:
    cd /home/ZSY
    pwd
# 这样是错误的
------------------------
【2】
exec:
    cd /home/ZSY; pwd
  • 当我们执行 【1】中的make exec 时,第一个例子中的cd没有作用,pwd会打印出当前的Makefile目录,而【2】中,cd就起作用了,pwd会打印出“/home/ZSY”。

  • make一般是使用环境变量SHELL中所定义的系统Shell来执行命令,默认情况下使用UNIX的标准Shell——/bin/sh来执行命令。


3.3 命令出错

  • 每个命令运行完后,make会检测上个命令的返回码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值