Как бы вы удалили все, кроме базовой папки каждой строки в переменной makefile? - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть переменная что-то вроде:

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

Я хочу получить переменную, которая содержит только первые папки, например:

VAR2 = obj bin bob

Я думаю, мне нужноиспользовать субстрат, но я не могу понять, как это сделать ...

1 Ответ

0 голосов
/ 24 ноября 2018

Не уверен, что это самое простое решение, но если:

  1. порядок результата не имеет значения,
  2. вы используете GNU make,
  3. нетпробелы в именах папок,

что-то вроде:

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

должно сделать это.

  • $(subst /, ,$(p)) заменяет все / пробеломв расширении make переменная p
  • firstword сохраняет только первое слово результата, то есть первая интересующая вас папка
  • foreach перебирает словаVAR и устанавливает переменную p для текущего слова
  • sort удаляет дубликаты (и ... сортирует).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...