Вот общее рабочее решение на основе @ Beta
Я использую GNU Make 4.1 SHELL=/bin/bash
поверх моего Makefile, поэтому YMMV!
Это позволяет нам принимать дополнительные аргументы (ничего не делая, когда мы получаем задание, которое не совпадает, вместо того, чтобы выдавать ошибку).
%:
@:
И это макрос, который получает для нас аргументы:
args = `arg="$(filter-out $@,$(MAKECMDGOALS))" && echo $${arg:-${1}}`
Вот работа, которую можно назвать этой:
test:
@echo $(call args,defaultstring)
Результат будет:
$ make test
defaultstring
$ make test hi
hi
Заметка! Возможно, вам будет лучше использовать "Taskfile", который представляет собой шаблон bash, который работает аналогично созданию, только без нюансов Maketools. См. Https://github.com/adriancooney/Taskfile