2015-01-10 3 views
3

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

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

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

Есть ли готовые скрипты для GNU Make I can use?

Особенности мне нужно (см второй ссылки для описания):

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

приятно иметь, но несущественные для меня:

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

Мы много работаем над созданием шаблонов шаблонов, и я не просто расскажу об этом здесь. Также есть текущая внутренняя дискуссия компании, что должно быть правильным путем. Если не _opinion based_, ваш вопрос задает рекомендацию по ресурсам вне сайта (которые оба не соответствуют теме). –

+0

Это, безусловно, мнение основано и требует рекомендации за пределами сайта. Есть ли сайт stackexchange для переноса вопроса? – nponeccop

+0

Может быть, вы получите предложение о [Meta SO] (http://meta.stackoverflow.com/questions) ... Как уже упоминалось, хорошей отправной точкой для предоставления более общих вещей в сборках sysetems является использование [_make templates_] (https://www.gnu.org/software/make/manual/html_node/Eval-Function.html). –

ответ

0

Посмотрите моя библиотека шаблонов под названием prorab:

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

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

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

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

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

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

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