В настоящее время я пытаюсь настроить проект на C ++, б, который использует Luabind библиотека. К сожалению, в моем дистрибутиве, а именно в Arch, эта библиотека отсутствует в официальных репозиториях, а библиотека в AUR устарела и не может скомпилироваться.
Учитывая, что мне нужна библиотека только для этого проекта, я подумал, что мог бы создать изолированную среду, похожую на python virtualenv, создав библиотеку, а затем установив (скопировав) включаемые файлы и получившиеся двоичные файлы в 2 подкаталогах моего проекта под названием include
а также lib
соответственно, которые я добавлю к связыванию и включу пути при сборке. Я понимаю, почему распространение библиотек с вашим проектом плохо: например, безопасность и исправление ошибок. Тем не менее, распространение DLL практически повсеместно осуществляется в Windows (что я мог бы сделать, если бы я кросс-компилировал), и многие проекты, такие как игры в Linux, как правило, упаковывают свои библиотеки, чтобы избежать несоответствий между дисками. Более того, если когда-нибудь понадобится исправленная или разветвленная версия библиотеки, я сомневаюсь, что когда-нибудь найду ее в любом официальном репо.
Итак, мой вопрос:
НОТА: Я использую Cmake для автоматизации сборки, если это важно
РЕДАКТИРОВАТЬ: Этот вопрос слегка перекрывается с моим.
Ваш подход интересен, но вам не нужно разрабатывать работающую систему, потому что это уже сделано, и, к счастью, вы находитесь всего в одном шаге от решения!
Используя CMake, легко автоматизировать сборку и компоновку внешнего исходного кода, используя ExternalProject модуль.
Увидеть http://www.kitware.com/media/html/BuildingExternalProjectsWithCMake2.8.html за полезную информацию.
Этот подход имеет несколько преимуществ:
Других решений пока нет …