2016-12-30 39 views

回答

0

这可以使用GNU-Make的file name functions(可用于任意字符串)和text functions的组合完成。这个概念很简单:

  1. 构建一个模式列表,它是原始目录列表加上超出所包含的路径数量的模式列表。 %将成为此处的通配符,因此我们将使用$(addsuffix <suffix>,<word list>)/%附加到列表中的每个单词。

  2. 从原始单词列表中删除与该列表模式相匹配的所有内容。这是$(filter-out <pattern>,<word list>)所做的。

把它放在一起,它可能是这样的:

DIRS = foo bar bar/baz ../qux/quux ../qux 
PARENTS = $(filter-out $(addsuffix /%,$(DIRS)),$(DIRS)) 

default: 
    @echo $(PARENTS) 

运行的是Makefile文件应该输出:

foo bar ../qux 
+0

这是聪明的,谢谢!它不处理'foo bar ..'的情况(得到'foo bar ..'而不是''),但是使用'realpath'命令做了这个诀窍。 –