У меня есть цель, которая представляет собой путь к файлу test.mk, который должен быть сгенерирован (изменен скриптом на основе конфигурации), и я хочу извлечь часть пути, которая компонент, подлежащий тестированию.Замена пути файла Makefile с несколькими подстановочными знаками
Путь находится в следующем формате, где [component] и [test_name] неизвестны.
TEST=absolute_path/[component]/unit_tests/[test_name]/test.mk
Я хочу, чтобы переформатировать этот путь, как RELATIVE_PATH/[компонент] и я попробовал эту линию, ничего не заменить.
$(TEST):
@echo $(patsubst absolute_path/%/unit_tests/%, relative_path/%, [email protected])
ГНУ сделать руководство это сказать о patsubst, так что я думаю, что он должен работать с несколькими групповыми символами в одном patsubst вызова:
Здесь шаблон может содержать «%», который действует как подстановочный знак, сопоставляющий любое количество символов внутри слова. Если замена также содержит «%», «%» заменяется текстом, который соответствует «%» в шаблоне. Только первый «%» в шаблоне и замене рассматривается таким образом; любой последующий «%» не изменяется.
Вы имеете в виду, что 'absolute_path' исправлен и должен быть жестко закодирован в make-файле? – Leon
«Я думаю, что он должен работать с несколькими подстановочными знаками в одном вызове patsubst». Вы, кажется, упустили последнее предложение в документе 'patsubst' docuementation , которое вы указали. Ваша проблема также неясна. Вам необходимо отправить пример файла makefile с указанием пробелов (ов), которых вы не знаете, как их завершить. –
absolute_path и relative_path известны через переменные. –