${wildcard шаблон}
возвращает список с названиями файлов, соответствующих шаблону,
которые в том числе могут представлять собой относительный путь.
${patsubst шаблон поиска, шаблон замены, список слов}
заменяет все слова в списке,
которые соответствуют шаблону поиска в соответствии с шаблоном замены.
OBJ = ${patsubst %.c, %.o, ${wildcard *.c}}
$@
- заменяется на текущую цель имя цели обрабатываемого правила.
$<
- имя первой зависимости обрабатываемого правила. Переменная которая заменяется
на первую зависимость из списка.
$^
- список все зависимостей обрабатываемого правила. Переменная которая заменяется
на список всех зависимостей с их каталогами.
$?
- если прериквизиты новее чем цель он использует только те которые обновились.
@
- "тихий запуск" не отображается запуск команд в терминале (лучше избегать его использование).
%
%.c = %.o
{} ()
Useful Links:
https://habr.com/ru/post/155201/
https://makefiletutorial.com/
https://www.gnu.org/software/make/manual/make.html