Минимальная система сборки GNU Make

Есть несколько статей о том, как избежать автоинструментов для небольших проектов и использовать всю мощь GNU Make:

  1. http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
  2. http://david.rothlis.net/large-gnu-make/

Я хотел бы что-то, на что опирается wildcard и встроенные неявные правила, насколько это возможно.

Есть ли готовые скрипты для GNU Make, которые я могу использовать?

Функции, которые мне нужны (см. Вторую ссылку для описания):

  • Укажите стандартные цели
  • Стандартные переменные среды
  • Автоматические зависимости от заголовочных файлов C и C ++
  • Используйте неявные правила
  • Зависимости от сторонних пакетов: pkg-config

Приятно иметь, но не обязательно для меня:

  • Мелкозернистые зависимости
  • Обнаружить изменения в окружающей среде
  • Чистый вывод
  • Отдельный каталог сборки

3

Решение

Взгляните на мою библиотеку шаблонов под названием прораб:

https://github.com/igagis/prorab/blob/master/wiki/HomePage.md

Он имеет большинство необходимых вам функций, а также включает в себя независимые make-файлы, которые используют одну и ту же библиотеку шаблонов.

Особенности:

  • Предоставить стандартные цели: Предоставляет цели для компиляции файлов .c и .cpp, связывания двоичной, динамической или статической библиотеки. Также предоставляет цели: все, очистить, установить, удалить
  • Стандартные переменные среды: Поддерживает CC, CXX, CFLAGS, CPPFLAGS, CXXFLAGS, LDFLAGS, LDLIBS, PREFIX, DESTDIR
  • Автоматические зависимости от заголовочных файлов C и C ++: да. * .d информация, сгенерированная GCC используется.
  • Зависимости от сторонних пакетов: pkg-config: просто пройдите `pkg-config --libs yourPackage` к LDLIBS, например.

  • Мелкозернистые зависимости: да, все зависит от необходимых вещей.

  • Обнаружение изменений в среде: поддерживает зависимость от флагов компиляции / компоновки
  • Чистый вывод: да, при необходимости можно включить «полный» выход.
  • Отдельный каталог сборки: объектные файлы помещаются в отдельный каталог, который вы можете переопределить.

Не стесняйтесь обращаться ко мне, если возникнут вопросы или отправить вопрос с вопросом на GitHub.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector