Я играю с make-файлами и наткнулся на % .o или % .c . Из того, что я понял, это указывает все c или o файлы. Но почему эта работа:
%.o: %.c
$(CC) -c $^ -o $@
и это не работает
SOURCE := $(wildcard *.c)
$(SOURCE:.c=.o): SOURCE
$(CC) -c $^ -o $@
Оба выражения указывают все файлы. так что делает символ % .o: в файле make?
Конструкция:
это шаблонное правило , которое является типом неявного правила. Он определяет одну цель и одну зависимость и вызывает один вызов
$(CC)
для каждой цели. Пока это:это стандартное правило, но у него (возможно) много целей и много зависимостей. Тем не менее, для всего этого, это будет вызывать только
$(CC)
один раз.источник