Comme vous pouvez le lire dans le manuel GNU Make le pourcentage agit comme un joker. Le premier argument de la fonction patsubst
fonction forme le modèle. Chaque élément/mot du dernier argument est comparé à ce motif et, s'il correspond, il est remplacé par le deuxième argument. Si le motif contient un symbole joker (%), celui-ci correspondra à n'importe quel nombre de caractères, qui seront copiés dans la chaîne de remplacement à la place du % dans le deuxième argument.
Dans votre exemple, le motif est simplement le symbole du joker, il correspondra donc à n'importe quel mot du dernier argument de la fonction, et ce mot sera copié dans la chaîne de remplacement (le deuxième argument) à la place du %.
Un exemple peut rendre les choses plus claires. Supposons que TEST_SUBDIRS
contient deux noms.
TEST_SUBDIRS := test1 test2
include $(patsubst %,$(src)/%/Make.tests, $(TEST_SUBDIRS))
Cela équivaut alors à ce qui suit.
include $(src)/test1/Make.tests $(src)/test2/Make.tests
Un fichier makefile est traité séquentiellement, ligne par ligne. Les affectations de variables sont "internalisées" et les instructions "include" entraînent l'insertion littérale du contenu d'autres fichiers à cet emplacement, après quoi ce contenu est traité dans le cadre du fichier makefile.
Un graphe de dépendance est formé à partir des règles au fur et à mesure de leur lecture et, après le traitement de l'ensemble du fichier, les recettes nécessaires sont exécutées pour mettre à jour la cible demandée.