Я начинаю новый проект C, который в основном основан на OSS. Он также будет на SourceForge, и я хотел бы воспользоваться этой возможностью, чтобы изучить устоявшиеся передовые методы организации такого рода кода. Я использую такие библиотеки, как libcurl и libz, и я скомпилирую их с помощью MinGW и MSYS.
Я буду распространять копии исходного кода всех библиотек, которые я использую в своем проекте, чтобы людям, загружающим исходный код, не приходилось искать зависимости. Как мне назвать каталог, в котором я храню библиотеки? Пока я колеблюсь между:
И куда мне компилировать эти библиотеки? Должен ли я просто настроить и установить их в корень системы, или я должен создать каталог, в который должны компилироваться все библиотеки, и ссылаться оттуда? Очевидно, это будет иметь разветвления для моего Makefile.
Как мне это сделать? Существуют ли установленные правила, которым я должен следовать? Они где-то записаны?





Во-первых, для внешних библиотек я бы использовал vendor, но это всего лишь предпочтение.
Во-вторых, я не считаю хорошей идеей устанавливать библиотеки Другой в системный корень без ведома пользователей. Самое главное, потому что это будет конфликтовать с более поздними установленными версиями этих библиотек. Поэтому я думаю, что лучшее место для этих библиотек было бы в том же каталоге, что и ваше приложение.
Вы также можете статически скомпилировать эти библиотеки в свою программу.
На предыдущей работе стандарт заключался в установке их в каталог с именем 3rdparty и сборке библиотек прямо там (в 3rdparty / LIBNAME / Debug и т. д.).
Мы используем что-то с суффиксом _ext или _EXT (например, MyProject_EXT), чтобы указать, что он является внешним по отношению к нашему проекту для хранения исходного кода внешних пакетов, с которыми мы связываемся.
Я согласен с Питером. Внешние библиотеки не следует встраивать в корень системы, так как они могут вызвать конфликты. Я бы создал их в их каталоге, а затем установил бы в каталог / lib (или, возможно, / extlib), который является уникальным для вашего приложения, и связал бы их там.
Пожалуйста, отправьте не сторонние источники с вашим кодом, либо в исходном коде, либо статически связанными с двоичными файлами, либо любым другим способом. Это просто помешает другим копиям того же самого и не будет обновляться, когда библиотека требует исправления. Сообщите пользователю, каковы требования (и следите за изменениями API в библиотеке!). Самостоятельно компилирующий пользователь обязательно получит зависимости, а дистрибутив обеспечит совместимость вашего пакета с версией, которую он отправляет.