Ознакомьтесь с руководством по сборке GNU (info make
), Раздел 10.2 . Он содержит каталог неявных правил, то есть правил, в которых вам не нужно явно указывать команды. Как и думал @GregHewgill, неявное правило «Связывание одного объектного файла» строит N
из N.o
, но имя должно совпадать. Следовательно, вы можете назвать ваш исполняемый файл как ваш объектный файл, в этом случае
test:
или (более стандартный, потому что он определяет цель all
)
all : test
вполне достаточно. Вы также можете выписать правило в явном виде, как это описал Грег Хьюгилл. В этом случае стандартное правило:
$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)
Включите LDFLAGS и LDLIBS в ваш Makefile, это облегчит жизнь пользователям.
(sic: я думаю, что LOADLIBES - это действительно LOADLIBS, и автор пропустил -o
).
В целом, я бы порекомендовал autoconf
и automake
вместо файлов ручной сборки. Дает вам кучу возможностей Makefile для совсем небольшой работы.