Зачем использовать менеджер пакетов с CMake? - PullRequest
3 голосов
/ 09 апреля 2019

В настоящее время я оцениваю менеджеры пакетов C ++ для проекта на работе и начинаю задумываться, зачем они мне нужны, когда CMake и удаленный сервер DVCS, кажется, справляются с задачей просто отлично.

В своих личных проектах я использую ExternalProject , чтобы вытащить и построить любые зависимости, которые у меня есть. Тем временем Конан, vcpkg, hunter и, возможно, другие утверждают, что делают то же самое.

Например, vcpkg требует, чтобы в каждом проекте был файл .cmake, чтобы его можно было использовать с CMake find_package.

Итак, зачем вообще использовать менеджер пакетов?

1 Ответ

3 голосов
/ 29 апреля 2019

Хотя использование CMake ExternalProject_Add напрямую может иметь такие преимущества, как флаги компиляции, которые точно совпадают, правильная настройка пакетов не всегда тривиальна. Кроме того, менеджеры пакетов позволяют повторно использовать источники зависимостей и двоичные файлы между проектами, что приводит к значительному снижению требований к хранилищу. Это справедливо даже для менеджеров пакетов, таких как vcpkg, которые собираются из исходного кода, поскольку они загружают исходные файлы только один раз (и собирают один раз для каждой конфигурации, чтобы сгенерировать двоичные файлы), а не один раз для каждой папки сборки (и для каждой конфигурации для двоичных файлов). И эта экономия может быть значительной, особенно с такими зависимостями, как Qt, размером в несколько гигабайт. Аналогично, вы также экономите много времени.

TL; DR:

  • Удобство использования
  • Снижение требований к хранилищу (если вы используете библиотеку более одного раза)
  • Сокращение времени сборки (если менеджер пакетов имеет бинарные пакеты или вы используете библиотеку более одного раза)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...