По сути, вы хотите перебрать все предпосылки. Очевидный способ сделать это - надуть снаряд:
log: test_A test_B
for f in $^; do ./$$f; done
Или вы можете написать цикл как цикл GNU Make foreach
, хотя вы должны быть осторожны, чтобы команды, которые являются результатом тела цикла, отображались в отдельных строках (через define
) или заканчивались терминатор оболочки (т.е. точка с запятой, что проще):
log: test_A test_B
$(foreach f,$^,./$(f);)
Наконец, в этом случае вы можете записать это более кратко и неясно как замену шаблона на каждом элементе, который будет зациклен:
log: test_A test_B
$(patsubst %,./%;,$^)
(я уверен, что вы можете добавить перенаправление вывода и $(TESTS)
переменную в зависимости от ситуации.)