Знаете ли вы какой-либо инструмент сборки, который управляет сборкой с использованием нерекурсивного подхода make?

Я искал stackoverflow, но не нашел удовлетворительного ответа на свой вопрос.

Статья Миллера Рекурсивный метод «сделать считается вредным») хорошо известна в сообществе. В основном я использовал нерекурсивный make для управления сборками мои проекты на долгие годы. Пока что мой опыт работы с нерекурсивным make был действительно положительным.

Чтобы пролить свет на других, мне удалось создать базу кода C ++, которая содержит около 2 миллионов строк кода. Мне удалось правильно управлять зависимостью. Самое замечательное в нерекурсивном подходе - это то, что мы можем воспользоваться преимуществами параллельной сборки.

Я доказал, что данные в этом отчете соответствуют минимум 5 крупных проектов. Но я вручную писал / переносил make-файлы для нерекурсивного make.

Как вы понимаете, для больших проектов это требует большого количества работы. Кроме того, основная проблема заключалась в том, что новым членам команды очень трудно понять / изменить / отладить существующие файлы makefile.

Итак, мой вопрос таков: знает ли кто-нибудь в сообществе какой-либо инструмент / скрипт, который может выполнять нерекурсивную make, но управлять make-файлами на более высоком уровне абстракции? Я хотел бы понять, написал ли кто-нибудь какие-нибудь скрипты или инструменты для генерации окончательных нерекурсивных make-файлов из некоторых простых входных спецификаций.


person ozox    schedule 11.11.2012    source источник
comment
ты смотрел cmake? Или он действительно создает рекурсивные make-файлы? Не помню, не нужно было заботиться ...   -  person hyde    schedule 12.11.2012
comment
Я слышал cmake много раз, но не рассматривал его подробно. Теперь, когда вы об этом упомянули, я могу просто взглянуть. Но, учитывая унаследованный код, который у нас есть, я думаю, что он вряд ли перейдет на какую-либо другую систему сборки, кроме GNU make. В любом случае спасибо.   -  person ozox    schedule 13.11.2012


Ответы (1)


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

Хотя системы сборки в целом ужасны (у меня есть фантазии о создании собственных), я должен предложить CMake (как это сделал Хайд).

Хотя он и не идеален, он лучше, чем простой make для проектов, состоящих из нескольких файлов. Язык сценариев несколько уродлив, но лучше, чем у make. К нему нужно немного привыкнуть, потому что он абстрагирует многое из того, что вы вручную написали бы в make, но я предлагаю следующее: http://web.cs.swarthmore.edu/~adanner/tips/cmake.php

person Alexander Duchene    schedule 15.11.2012