Где возможно код для библиотек, предоставленных системой/дистрибутивом. Это облегчает отправку продукта на этот дистрибутив.
Однако, если вы создаете коммерческое приложение, потому что существует так много разновидностей дистрибутивов Linux, что может означать, что вам нужно поддерживать множество различных сборок приложений для каждого дистрибутива. Что не обязательно плохо, поскольку это означает, что вы можете более четко интегрироваться с системой управления пакетами дистрибутива.
Но в случае, если вы не можете сделать это, достаточно просто загрузить источник каждой зависимой от вас сторонней зависимости и интегрировать построение этой зависимости в статическую библиотеку, связанную с вашим исполняемым файлом. Таким образом, вы точно знаете, с чем вы связываетесь, но имеет недостаток в раздувании вашего исполняемого файла. Это также может потребоваться, если вам нужна конкретная библиотека (или версия), не предоставленная дистрибутивом.
Если вы хотите, чтобы ваш код основывался на широком спектре различных систем Unix, вы, вероятно, будете разумно смотреть в GNU autoconf и automake. Они помогут вам построить сценарий configure
и makefile
для вашего проекта, чтобы он строился практически на любой системе Unix.
Также обратите внимание на pkg-config, который сейчас используется в дистрибутивах Linux, чтобы помочь вам включить ссылки на нужные библиотеки (для библиотек, поддерживающих pkg-config).
Если вы используете подрывную деятельность для управления своим источником, существует «соглашение», которое большинство репозиториев subversion используют для управления собственным кодом и кодом «поставщика».
Большинство репозиториев svn имеют дерево «vendor» (которое идет вместе с багажником, ветки & тегов деревьев). Это верх для всех сторонних поставщиков кода. В этом каталоге у вас есть каталоги для каждой используемой библиотеки. Например:
branches/
tags/
trunk/
vendor/somelib
vendor/anotherlib
Под каждый из этих LIBS представляет собой каталог для каждой версии библиотеки и «текущей» директории для большей версии уточненных в вашем хранилище.
vendor/somelib/1.0
vendor/somelib/1.1
vendor/somelib/current
Затем дерево вашего проекта должен быть изложено что-то вроде этого:
ствола/источник # всего код здесь ствола/LIBS # все коды поставщика здесь
Каталог ЛИЭСА должен быть пустым, но он будет иметь svn:externals
мета-данные, связанные с ним, с помощью:
svn propedit svn:externals trunk/libs
содержание этого имущества будет какая-то вещь вдоль линий (предполагается, что диверсия 1.5):
^/vendor/somelib/current somelib
^/vendor/anotherlib/1.0 anotherlib
Это означает, что, когда вы извлекаете ваш код подрывной также проверяет ваши библиотеки поставщика в каталог ствола/Libs. Так что, когда проверили это выглядит следующим образом:
trunk/source
trunk/libs/somelib
trunk/libs/anotherlib
Это описано (вероятно, намного лучше) в Subversion Book. В частности, раздел по обработке vendor branches и externals.