Berikut adalah solusi kerja umum berdasarkan @ Beta
Saya menggunakan GNU Make 4.1 dengan SHELL=/bin/bash
di atas Makefile saya, jadi YMMV!
Ini memungkinkan kita untuk menerima argumen tambahan (dengan tidak melakukan apa-apa saat kita mendapatkan pekerjaan yang tidak cocok, daripada membuat kesalahan).
%:
@:
Dan ini adalah makro yang memberikan argumen untuk kami:
args = `arg="$(filter-out $@,$(MAKECMDGOALS))" && echo $${arg:-${1}}`
Inilah pekerjaan yang mungkin disebut ini:
test:
@echo $(call args,defaultstring)
Hasilnya adalah:
$ make test
defaultstring
$ make test hi
hi
Catatan! Anda mungkin lebih baik menggunakan "Taskfile", yang merupakan pola bash yang cara kerjanya mirip, hanya saja tanpa nuansa Maketools. Lihat https://github.com/adriancooney/Taskfile