gpt4 book ai didi

makefile - GNU make,如何判断一个路径是文件还是目录?

转载 作者:行者123 更新时间:2023-12-01 11:35:06 24 4
gpt4 key购买 nike

从某些路径,我使用

PATHS = $(wildcard $(SOME_PATH)/*)

获取所有子路径。

我需要知道它是文件还是目录。

如何在make中实现?

谢谢。

最佳答案

John Marshall 有一个可行的方法,但还有一个更安全的方法。所有目录总是有一个众所周知的条目,即“.”。所以,你要做的是:

PATHS := $(wildcard $(SOME_PATH)/*)
DIRS := $(patsubst %/.,%,$(wildcard $(addsuffix /.,$(PATHS))))
FILES := $(filter-out $(DIRS),$(PATHS))

通配符将匹配所有目录,并且只匹配目录,因为只有目录包含“.”。这很稳健。

Yehnan 的方法同样有效,但效率较低,因为您要为 PATHS 中的每个元素调用一个 shell。这很可能不会对您的运行时间产生太大影响,但如果它可以在 make 内部完成而不是通过运行 shell,我会更喜欢那样。它还有助于避免 $(shell ...) 的可移植性。

关于makefile - GNU make,如何判断一个路径是文件还是目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442829/

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