Не думаю, что вы хотите $<
.Это распространяется на первую предпосылку, которая в данном случае main-test.o
, что означает, что вы будете строить build/main-test.o-test
с использованием main-test.o.o
и test/main-test.o-test.cpp
, что кажется маловероятным.
Вы, вероятно, имеете в виду $*
вместо.
Однако вы не можете использовать автоматические переменные в списках предварительных условий: они определены только внутри самого рецепта.
Почему бы не использовать шаблон в списке предварительных требований;вот как должны работать правила шаблонов:
%-test: %.o test/%-test.cpp main-test.o
$(CC) $(FLAGS) $(BOOST_LINK_FLAGS) $^ -o build/$*-test
build/$*-test