Makefile 关于realpath的研究

Makefile 里的realpath 函数的探究

首先看一下 GUN 官网的解释:

$(realpath names…)
        For each file name in names return the canonical absolute name. A canonical name does not contain any . or .. components, nor any repeated path separators (/) or symlinks. 
        In case of a failure the empty string is returned. Consult the realpath(3) documentation for a list of possible failure causes.
大致的意思为:
对于名称中的每个文件名返回规范绝对名称。规范名称不包含任何.或..成分,也没有任何重复的路径分隔符(/)或符号链接。
万一发生空字符串返回的问题。请参考realpath(3)文档的可能的失败原因的列表。

所以说,这个函数就是放回一个绝对的文件地址。
我们来测试它一下:
首先我在 home/jin/jin/make2这个目录里添加了一个很简单的Makefile文件

jin:
@echo $(realpath ./)   

运行的结果如下:
这里写图片描述

可以看出它放回了真实绝对的一个路径

这个操作和使用 shell pwd 操作是一致的(如下):

    jin:
        @echo $(realpath ./)
        @echo $(shell pwd)

这里写图片描述

shell pwd 可以实现realpath 的功能。但是在某些场合下,你就不得不使用 realpath了

include ../make2/jia.mk
jin:
    @echo $(MAKEFILE_LIST);    
    @echo $(lastword $(MAKEFILE_LIST));
    @echo $(dir $(lastword $(MAKEFILE_LIST)));
    @echo $(realpath $(dir $(lastword $(MAKEFILE_LIST))));
    @echo $(shell pwd);

可以看一下运行结果:
这里写图片描述

2015/5/10 补充:
在一些场合下可以看的到使用了 realpath 和 abspath 函数这里做一下简单的对比:
只有这个目录存在 realpath 就会返回目录的绝对路径,不会包含 ./ ../ 这些字符。当目录不存在的时候realpath 返回为空。
而abspath则不同,不管这个文件夹是否存在,都会显示这个目录的绝对路径

总结:makefile 里的realpath是放回文件的绝对地址,某些场合下可以使用$(shell pwd) 来替代

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值