Как вы можете прочитать в руководстве по сборке GNU , процент действует как подстановочный знак.Первый аргумент функции patsubst
формирует шаблон.Каждый элемент / слово в последнем аргументе сравнивается с этим шаблоном, и, если он совпадает, он заменяется вторым аргументом.Если в шаблоне есть подстановочный знак (%), он будет соответствовать любому количеству символов, и эти символы будут скопированы в строку замены вместо% во втором аргументе.
В вашем примерешаблон является просто подстановочным символом, поэтому он будет соответствовать любому слову в последнем аргументе функции, и это слово будет скопировано в строку замены (второй аргумент) вместо%.
Пример может прояснить ситуацию.Давайте предположим, что TEST_SUBDIRS
содержит два имени.
TEST_SUBDIRS := test1 test2
include $(patsubst %,$(src)/%/Make.tests, $(TEST_SUBDIRS))
Это эквивалентно следующему.
include $(src)/test1/Make.tests $(src)/test2/Make.tests
Make-файл обрабатывается последовательно, строка за строкой.Переменные присваиваются «внутренне», и операторы include заставляют содержимое других файлов вставляться буквально в том месте, после чего это содержимое обрабатывается как часть make-файла.
График зависимостей формируется из правил по мере их появления.прочитайте, и после обработки всего файла будут выполнены необходимые рецепты для обновления запрошенной цели.