Я не понимаю, зачем вам это нужно реализовывать в make-файле, но вот вы:
MT_TARGETS:=$(filter %.mt,$(MAKECMDGOALS))
.PHONY: $(MT_TARGETS)
$(MT_TARGETS):
@echo $@ | sed -e "s:.mt$$::" >> list_of_mts.txt
mt: $(MT_TARGETS)
@cat list_of_mts.txt
Тестирование:
$ make mt comp1.mt comp2.mt comp3.mt
comp1
comp2
comp3
make: `comp1.mt' is up to date.
make: `comp2.mt' is up to date.
make: `comp3.mt' is up to date.
Для этого используется специальная переменная MAKECMDGOALS
.
Примечание: list_of_mts.txt будет бесконечно увеличиваться ...
Примечание2: запись в list_of_mts.txt небезопасна при параллельном выполнении (файл list_of_mts.txt может быть поврежден).