Je joue avec des makefiles et je suis tombé sur % .o ou % .c . D'après ce que j'ai compris, il précise tous les fichiers c ou o . Mais pourquoi ce travail:
%.o: %.c
$(CC) -c $^ -o $@
et ça ne marche pas
SOURCE := $(wildcard *.c)
$(SOURCE:.c=.o): SOURCE
$(CC) -c $^ -o $@
Les deux expressions spécifient tous les fichiers. alors que fait % .o: le symbole dans le fichier make?
La construction:
est une règle de modèle , qui est un type de règle implicite. Il spécifie une cible et une dépendance et provoque une invocation de
$(CC)
pour chaque cible. Alors que ce:est une règle standard mais elle a (éventuellement) de nombreuses cibles et de nombreuses dépendances. Pourtant, pour tout cela, il ne sera invoqué
$(CC)
qu'une seule fois.la source