makefile依赖关系中的竖线 `|`

makefile依赖关系中的竖线 |

makefile的执行逻辑是,目标依赖于依赖文件,当依赖文件不存在时,make会去寻找其它规则创建依赖文件;当依赖文件比目标文件更新时,这条规则会被执行。

经常会在makefile中看到类似这样的依赖关系: $(BUILD_DIR)/%.o: %.c | $(BUILD_DIR)
这是什么意思呢?
这个意思是: 目标的生成依赖于.c 文件和 $(BUILD_DIR)目录的存在,但是并不关心 $(BUILD_DIR)目录的修改时间。即便$(BUILD_DIR)目录的最后修改时间比目标文件更新,但是该条规则也不执行,只有 .c文件比目标文件更新时才会执行。
原因如下: 因为目标文件 %.o 保存在 $(BUILD_DIR) 目录下,因此当目标文件更新时,意味着$(BUILD_DIR)目录的修改时间也更新了。如果没有那个短竖线,那么make命令认为目标依赖的.c虽然没有修改,但是$(BUILD_DIR)修改了,因此每次都会重新执行该条规则,这显然是我们不希望看到的,因此加上一条竖线 |,告诉make,仅仅关心$(BUILD_DIR)是否存在,而不关注最后修改时间。

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值