У нас есть проект, который потребует связывания с libcurl
и libxml2
, среди других библиотек.Похоже, у нас есть две стратегии управления этими зависимостями:
Попросите каждого разработчика установить эти библиотеки в «обычных» местах, например, /usr/lib
или
Включите источники этих библиотек в выделенную папку в дереве исходных текстов проекта.
Подход 1 требует от всех, чтобы эти библиотеки были установлены в их системе, нокажется подход, используемый многими проектами с открытым исходным кодом.В таких проектах сборка обнаружит, что эти библиотеки отсутствуют и не будут работать.
Подход 2 может сделать дерево проекта неуправляемо большим в некоторых случаях и значительно увеличить время компиляции.Кроме того, этот подход, очевидно, может быть принят слишком далеко.Например, я бы не стал размещать компилятор под деревом проекта (верно?).
Каковы лучшие практики с внешними зависимостями?Может ли / должен ли каждый разработчик иметь определенные библиотеки, установленные для сборки проекта?Или считается, что лучше включить все зависимости в дерево проекта?