Используйте sqlite для управления флагами сборки Makefile - PullRequest
1 голос
/ 17 марта 2009

Я строю для более двух десятков целей из дерева исходных текстов, обычно с тремя активными ветвями, с производственной и отладочной сборками. До настоящего времени я использовал личный Makefile, который определяет цель, которая включает в себя общий Makefile, который определяет флаги компиляции, который затем включает Makefile из определенного исходного дерева. Это работает, но я не могу не думать, что есть лучший способ.

Я бы хотел использовать базу данных sqlite3 для хранения и организации полного списка флагов сборки. Во время компиляции база данных будет запрашиваться для генерации флагов на основе версии проекта, платформы и dev / production и начала сборки.

Эта база данных будет единственным местом, где я могу документировать и отслеживать текущие настройки для всех моих сборок разработки. Базовый набор хранимых флагов будет переопределен более детальными флагами в версии, целевой платформе, а затем в уровнях качества сборки.

В рамках реализации чего-то подобного я также создал бы несколько сценариев оболочки для управления базой данных и получения / установки флагов, а также позволил бы другим разработчикам в моей лаборатории принять это легче.

Это уже было сделано? Есть ли примеры чего-то подобного?

Есть ли другой / лучший способ справиться с этим?

Две вещи: * Я не могу изменить исходный проект Makefiles. * Попытка использовать что-то вроде automake было бы громоздким, поскольку необходимое количество настроить флаги для включения уровня отладки в существующем модуле базы кода будет исчисляться сотнями.

Ответы [ 2 ]

1 голос
/ 17 марта 2009

Я подозреваю, что вы можете взглянуть на более сложную систему сборки. Взгляните на ant , jam и другие инструменты системы сборки. Я думаю, что стандартный способ GNU сделать то, что вы описываете, - это скрипты ./configure ( autoconf ), хотя я вижу, что управлять различными конфигурациями будет сложно.

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

0 голосов
/ 17 марта 2009

ИМХО, использование базы данных для этого является излишним. Использование makefile включает в себя чистый и простой способ справиться с этим. Каковы ваши проблемы / проблемы / проблемы относительно этого подхода? Возможно, есть способ реструктурировать ваши make-файлы для достижения ваших целей, без добавления базы данных и без перехода на совершенно другую систему сборки.

...