Я пытаюсь выяснить, как определить мою среду сборки.Portable Build Environment
- У меня есть несколько многоразовых автономных модулей, разработанных на их собственных графиках выпуска.
- У меня также есть несколько клиентов, у каждого из которых есть собственное пользовательское приложение, использующее разные версии каждого повторно используемого модуля.
- Я использую g ++/make-файлы для моей системы сборки
Мне нужно сделать его переносным для Cygwin и Linux.
Предположим, что каждый модуль/клиент построен с собственной Makefile Как я могу настроить мой Makefiles динамически указывать правильную версию зависимость?
Как я могу настроить CM-репо, чтобы команды разработчиков для каждого проекта и модуля работали независимо и не нуждались в большой ручной настройке каждый раз, когда они создают новую ветку?
Я использую следующую структуру каталогов, но это не кажется достаточным для моих потребностей.
./fooLibrary
./include
./lib
./barLibrary
./include
./lib
./plugins
./pluginX
./include
./lib
./pluginY
./include
./lib
./pluginZ
./include
./lib
./projects
./customer1
./bin
./obj
./projects/customer2
./bin
./obj
./projects/unittests
./bin
./obj
Я играл с созданием каталога установки для о версиях каждого модуля с их собственным включать/Lib каталоги, но это кажется излишним, и я никогда не любил версии продуктов сборки. т.е.
./fooLibrary
./src
./1.0
./include
./lib
./1.1
./include
./lib
./1.2
./include
./lib
./1.2.1
./include
./lib
Я просто пытаюсь сохранить его простым для команды разработчиков.
EDIT: Важно отметить, что у меня еще нет работы. Я чувствую, что я пытаюсь сделать что-то правильно, но я издеваюсь, пытаясь понять это правильно.
Вы находитесь на хорошем пути, используя GNU 'make' изначально, который должен служить вам хорошо для систем на основе cygwin и MinGw на основе оконных машин. Хотя ваш вопрос слишком широк. Подход, который мы используем в нашей компании, состоит в том, чтобы 'включать' 'config.mk' файлы с определенных уровней в структуре каталогов и создавать функции шаблона для определенных целей. Он слишком широк, чтобы объяснить здесь, как это работает, несмотря на то, что будет раскрывать некоторые интеллектуальные данные компании. –
_ @ Jerunh_ Если вы используете достойную IDE (например, как Eclipse CDT), вы можете начать с созданного ими Makefile. –
Все независимые от платформы системы сборки сосут. Вот почему [этот список] (https://en.wikipedia.org/wiki/List_of_build_automation_software) так долго ... Если вы много делаете на Linux, я бы сказал, что в ваших интересах учиться autotools, поскольку это наиболее часто , Не нужно «лучше», просто самое распространенное. –