- нет необходимости для обнаружения внешних зависимостей
настройки
- использования компилятора по умолчанию/линкер
Почему сценарий тогда? При условии, что все исходные файлы проекта являются *.cpp
и в текущем каталоге:
all: $(notdir $(CURDIR))
$(notdir $(CURDIR)): $(subst .cpp,.o,$(wildcard *.cpp))
$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o [email protected]
Makefile, будет строить все исходные файлы с настройками по умолчанию компилятор/компоновщик в исполняемый файл с именем после того, как имя текущего каталога.
В противном случае я рекомендую людям попробовать SCons вместо того, чтобы сделать там, где он намного проще и интуитивно.Добавлен бонус, что нет необходимости вводить код вручную clean
целей, проверка зависимостей источника/заголовка встроена, она носит рекурсивный характер и поддерживает соответствующие библиотеки.
Также make имеет функцию подстановки для поиска файлов. –
+1 Почему бы не использовать стандартные имена для вещей. И стандартные правила будут работать для цели, не нужно делать ничего особенного. –
@Martin: Я пытался использовать неявное правило для цели, но не получилось. Это кажется возможным только в том случае, если один из исходных файлов называется '$ (TARGET) .cpp'. Что вы имеете в виду под «стандартными именами для вещей»? – Job