从某些路径,我使用
PATHS = $(wildcard $(SOME_PATH)/*)
Run Code Online (Sandbox Code Playgroud)
获得所有子路径.
我需要知道它是文件还是目录.
怎么做make?
谢谢.
约翰马歇尔有一种方法可行,但有一种更安全的方式.所有目录总是有一个众所周知的条目,那就是".".所以,你要做的是:
PATHS := $(wildcard $(SOME_PATH)/*)
DIRS := $(patsubst %/.,%,$(wildcard $(addsuffix /.,$(PATHS))))
FILES := $(filter-out $(DIRS),$(PATHS))
Run Code Online (Sandbox Code Playgroud)
通配符将匹配所有目录,并且只匹配目录,因为只有目录包含".".这很强大.
Yehnan的方式也可以,但效率较低,因为你正在为PATHS中的每个元素调用一个shell.这很可能不会影响你的运行时整体,但如果它可以在make内部而不是通过运行shell来完成,我宁愿这样做.它还有助于避免$(shell ...)的可移植性.
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |