Если вы используете GNU make, вы можете использовать статическое шаблонное правило . Это позволяет использовать символ %
в качестве цели правила, и правило применяется ко всем именам целей, где %
заменяется любой строкой символов. Если %
появляется в зависимости, она заменяется той же самой строкой.
x%: x%.o static1.o static2.o
gcc -o $@ $*.o static1.o static2.o
x%.o: x%.c sample1.h sample2.h sample3.h
gcc -c $*.c
Этот механизм не позволяет перечислить все цели для all
. Для этого вам нужно нечто более сложное: перечислить файлы .c
и объявить соответствующие цели как зависимости all
. С помощью GNU make вы можете сделать это с помощью функции wildcard
для вывода списка файлов, а затем таких функций, как basename
и addsuffix
или patsubst
или его сокращенная форма для преобразования имен файлов.
all: $(patsubst %.c,%,$(wildcard x*.c))
Обратите внимание, что я предполагаю, что часть после x
может быть произвольной строкой, а не просто целым числом в определенном диапазоне. Я думаю, что с GNU make можно настаивать на целом числе, но это будет намного сложнее.