Сведения о вопросе

LARVION

04:36, 4th August, 2020

Теги

c   open-source    

Как лучше всего организовать мой код проекта C и его внешние библиотеки?

Просмотров: 377   Ответов: 4

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

Я буду распространять копии источника всех библиотек, которые я использую с моим проектом, поэтому людям, загружающим источник, не нужно будет клевать и охотиться за зависимостями. Как я должен называть каталог, в котором я храню библиотеки? До сих пор я колебался между:

  • Либ, потому что это библиотеки. Однако 'lib' имеет другую коннотацию в UNIX-мире.
  • src, потому что они являются исходными файлами.
  • 3-я партия, потому что я ее не писал.

И где я должен скомпилировать эти библиотеки? Должен ли я просто настроить и установить их в корневой каталог системы, или я должен настроить каталог, в который все библиотеки должны компилироваться, и связать оттуда? Очевидно, что это будет иметь последствия для моего Makefile.

Как я должен идти об этом? Существуют ли установленные соглашения, которым я должен следовать? Они где-то записаны?



  Сведения об ответе

baggs

08:54, 26th August, 2020

В предыдущем задании стандартом было установить их в каталог с именем 3rdparty и построить библиотеки прямо там (в 3rdparty/LIBNAME/Debug и т. д.).


  Сведения об ответе

DO__IT

02:04, 16th August, 2020

Во-первых, для внешних библиотек я бы использовал vendor , но это просто предпочтение.

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

Вы также можете статически скомпилировать эти библиотеки в свою программу.


  Сведения об ответе

PAGE

17:22, 9th August, 2020

Мы используем что-то с суффиксом _ext или _EXT (т. е. MyProject_EXT), чтобы обозначить, что он является внешним по отношению к нашему проекту для хранения исходного кода внешних пакетов, с которыми мы связываемся.

Я согласен с Питером. Внешние библиотеки не должны быть встроены в корневую систему системы, так как они могут вызвать конфликты. Я бы построил их в своем каталоге, а затем установил их в каталог /lib (или, возможно, /extlib), который является уникальным для вашего приложения, и связал бы их там.


  Сведения об ответе

PIRLO

22:16, 14th August, 2020

Пожалуйста, не отправляйте сторонние источники с вашим кодом, либо в исходном коде, либо связанные статически в двоичные файлы, или любым другим способом. Это будет просто мешать другим копиям того же самого и не будет обновляться, когда библиотека требует исправления. Расскажите пользователю, каковы требования (и следите за изменениями API в библиотеке!). Самокомпилирующийся пользователь обязательно получит зависимости, дистрибутив будет следить за тем, чтобы ваш пакет работал с версией, которую они отправляют.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться