linux - 您将如何删除生成文件变量中每个字符串的基本文件夹以外的所有内容?

标签 linux makefile

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

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

我想获取一个只包含第一个文件夹的变量,这样:

VAR2 = obj bin bob

我在想我需要使用 subst,但我不知道该怎么做...

最佳答案

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

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

类似于:

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

应该能做到。

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

关于linux - 您将如何删除生成文件变量中每个字符串的基本文件夹以外的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53453808/

相关文章:

linux - 电力线不显示特殊符号

linux - 多行变量中导出的含义是什么

linux - 在 Linux 上使用 makefile 为复杂项目构建动态库

c++ - 如何让我的 `std::string url_encode_wstring(const std::wstring &input)` 在 Linux 上工作?

linux - 如何获取根目录下各个目录占用的大小?

php - 一般错误 : 20003 Adaptive Server connection timed out [20003] (severity 6)

c - C(ubuntu)中的Makefile多重定义

c++ - 在 Makefile 中分别处理变量中的所有文件

C: "undefined reference to"和 collect2: error: ld 返回 1 退出状态

linux - Gstreamer 错误 : Pipeline could not be constructed: syntax error