BSD Make и GNU Make совместимый make-файл - PullRequest
5 голосов
/ 03 октября 2010

У меня есть BSDmakefile и GNUmakefile, которые в значительной степени идентичны, за исключением управления зависимостями.

GNUmakefile:

ifneq ($(MAKECMDGOALS), "clean")
-include $(dependencies)
endif

BSDmakefile:

.for i in $(dependencies)
.sinclude "${i}"
.endfor

Есть ли способ сделать так, чтобы я мог определить, работаю ли я под gmake или bsdmake, а затем выполнить соответствующие операторы включения, основанные на этом? Я помню, как кто-то использовал причуду в обоих процессорах makefile, чтобы добиться подобного эффекта.

В качестве альтернативы, если есть лучший подход, чем этот, я хотел бы знать! (переключение на SCons или CMake не подходит!)

Спасибо!

1 Ответ

9 голосов
/ 03 октября 2010

Вы можете поместить свой специфический для GNU материал в GNUmakefile, свой специфический для BSD материал в BSDmakefile, а свой обычный материал - в файл с именем Makefile.common или аналогичный.Затем включите Makefile.common в самом начале каждого из двух других.Недостатком является то, что теперь у вас есть 3 файла сборки вместо 2. Сверху вы будете редактировать только 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...