$(1)
расширяет первый аргумент правила.$(1:D=foo)
применяет модификатор, который заменяет часть каталога расширенных элементов (dirname, если вы думаете в терминах оболочки) строкой foo
.Особый случай $(1:D=)
удаляет часть каталога.Модификатор S
относится к суффиксу (также известному как расширение) имени файла, G
- к «grist» имени цели, вызывающей замятие.
См. Раздел Расширение переменной из документа Perforce Jam для полного списка.Я могу порекомендовать прочитать полную документацию по Jam, чтобы понять конкретные понятия (например, grist).