Все в порядке. В руководстве написано:
bigoutput littleoutput : text.g
generate text.g -$(subst output,,$@) > $@
эквивалентно
bigoutput : text.g
generate text.g -big > bigoutput
littleoutput : text.g
generate text.g -little > littleoutput
Таким образом, ваш Makefile также эквивалентен
a : test
cp $< $@
b : test
cp $< $@
и когда вы ввели команду make, по умолчанию программа создала первую цель, то есть 'a'.