gpt4 book ai didi

gnu-make - make 没有意识到相对路径名依赖与绝对路径名目标相同

转载 作者:行者123 更新时间:2023-12-04 02:12:33 27 4
gpt4 key购买 nike

以下是针对我遇到的问题的简化生成文件:

all: /tmp/makey/../filey
@echo All done
/tmp/filey:
@echo Filey

当我运行 make 时它说:

make-3.79.1-p7:* 没有制定目标 /tmp/makey/../filey' 的规则,all' 需要。停止。

显然它没有意识到/tmp/makey/../filey 与/tmp/filey 相同。我有什么想法可以让这项工作成功吗?

谢谢

再见-- 穆拉利

最佳答案

较新版本的 GNU make 具有 $(abspath ...)$(realpath ...) 函数,您可以将它们应用于您的先决条件和目标以解决相同字符串的路径。如果您自己构造了这些名称(例如,$(PREFIX)/../filey),那么您可以使用 $(dir $(PREFIX))filey .

除此之外,没有办法解决这个问题。 Make 在目标上使用字符串匹配,如果字符串不相同,则它们不匹配(有一种特殊情况可以忽略简单前缀 ./),即使 make 理解这种区别(通过应用 abspath 本身到每个目标名称,也许)它在面对符号链接(symbolic link)时仍然无济于事。

唯一“真正”的答案是让 make 了解有关底层文件系统(例如设备 ID 和 inode )的一些信息,这样您就可以在不引用文件路径名的情况下谈论文件。然而,在像 make 这样的可移植程序中,这样做是有问题的。

关于gnu-make - make 没有意识到相对路径名依赖与绝对路径名目标相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15693957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com