2016-12-29 4 views
0

Мне интересно, как разумно управлять зданием и установкой для некоторых наших сторонних зависимостей C++ от Linux (Ubuntu). Способ, которым я в настоящее время настроен, это git-lfs со всеми необходимыми сжатыми сторонними источниками. Затем я использую сценарий оболочки, который я написал, чтобы установить все необходимые системные зависимости, а затем распаковать и создать нужную библиотеку. Этот сценарий оболочки также заботится о настройке всех путей, чтобы наш исходный код мог легко ссылаться на сторонние библиотеки.Управление установкой сторонних библиотек C++

Пример команды для нашего сценария являются ./install OpenCV или ./install все

Однако через несколько месяцев сценарий получил довольно большие и перерывы иногда, когда некоторые библиотеки уже установлены или другие незначительные проблемы. Поэтому я хотел бы заменить его чем-то более умным и полезным. В настоящее время я занимаюсь написанием какого-то сценария python, но просто изменение языка от оболочки к python не является большим преимуществом. Поэтому я ищу, если есть какие-то конкретные библиотеки python, которые могут помочь мне в управлении этими библиотеками.

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

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

ответ

0

Я использую jhbuild для такого рода вещей (если я понимаю, что вы делаете правильно). Он вышел из проекта GNOME (они используют его для создания всего рабочего стола из исходного кода), но его легко настроить для любого набора проектов. jhbuild, упакованный в недавнем Ubuntus, отлично работает.

Вы пишете немного XML для описания каждого проекта: где загружать источники, какие патчи применять, какие флажки настройки использовать, от каких проектов это зависит и т. Д .; затем, когда вы вводите jhbuild build mything, он разрабатывает, что строить и в каком порядке и продолжает с ним. Он разумно разбирается в изменениях, поэтому, если вы редактируете исходный файл в одном из проектов, составляющих ваш стек, он восстанавливает только поврежденные части.

Для меня, например, это для FFTW3, отличная быстрое преобразование Фурье библиотеки:

<autotools id="fftw3" 
    autogen-sh="configure" 
    autogenargs="--disable-static --enable-shared --disable-threads" 
    > 
    <branch 
     repo="fftw" 
     module="fftw-3.3.4.tar.gz" 
    /> 
    <dependencies> 
     <dep package="libiconv"/> 
    </dependencies> 
    </autotools> 

С вероятно очевидными смыслами. Это построение из деблокирующего tarball, но оно также может быть создано из git. Он доволен проектами cmake. jhbuild написан на Python, поэтому его легко настроить. Благодаря GNOME многие популярные библиотеки включены.

Я на самом деле использую его для создания двоичных файлов Windows. Вы можете настроить его для создания всего с помощью кросс-компилятора, а затем поместить его в Docker. Это делает его одним слоем для любого, кто сможет построить большое и сложное приложение (практически) на любой платформе. Конечно, вы можете использовать его и для автоматических ночных сборок.

Есть, вероятно, лучшие вещи вокруг, но это сработало хорошо для меня.