您如何删除makefile变量中每个字符串的除基本文件夹以外的所有文件夹?

时间:2018-11-23 23:20:31

标签: linux makefile

我有一个类似这样的变量:

VAR := obj/test obj/var/test2 bin/another/one bob/billy/joe

我想获取一个仅包含第一个文件夹的变量,例如:

VAR2 = obj bin bob

我认为我需要使用subst,但是我不知道该怎么做...

1 个答案:

答案 0 :(得分:1)

不确定这是最简单的解决方案,但如果:

  1. 结果的顺序无关紧要,
  2. 您使用GNU make,
  3. 您的文件夹名称中没有空格

类似:

VAR2 := $(sort $(foreach p,$(VAR),$(firstword $(subst /, ,$(p)))))

应该做到。

  • $(subst /, ,$(p))在扩展make变量/的扩展中用空格替换所有p
  • firstword仅保留结果的第一个单词,即您感兴趣的第一个文件夹
  • foreach遍历VAR的单词,并将make变量p设置为当前单词
  • sort删除重复项(和...排序)。