Структура и зависимости кросс-платформерного проекта CMake?

Какой правильный способ подключения внешних зависимостей в проект CMake. В некоторых проектах и примерах я видел, что люди подключали зависимости через подмодули git, в других всякие find-скрипты, а ещё есть External Project и пакетные менеджеры (conan).

И так, проект кросс-платформерный (Windows, Android, в перспективе iOS, macOS, Linux и другие). Проект с закрытым кодом, так что пользователь получает скомпилированный бинарник. При этом, конечно, очень важную роль играет кросс-компиляция. Некоторые платформы имеют отдельные зависимости (к примеру GLFW).

Один из моих вариантов решения проблемы:
Написать скрипт (скорее всего на python, ибо нужна возможность компилировать как из под Windows, так и из под Linux), который будет собирать все зависимости под конкретную платформу, раскидывать по папочкам и генерировать скрипт с путями ко всем нужным библиотекам.
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 2
Tarik02
@Tarik02 Автор вопроса
Если интересно, можете посмотреть переписку здесь: https://stackoverflow.com/questions/54322172/struc...
Ответ написан
Комментировать
Nipheris
@Nipheris Куратор тега C++

Один из моих вариантов решения проблемы:
Написать скрипт (скорее всего на python, ибо нужна возможность компилировать как из под Windows, так и из под Linux), который будет собирать все зависимости под конкретную платформу, раскидывать по папочкам и генерировать скрипт с путями ко всем нужным библиотекам.

Поразительно, но вы в точности описали пакетный менеджер Conan (о котором упоминали).

Написать скрипт (скорее всего на python, ибо нужна возможность компилировать как из под Windows, так и из под Linux)

Конан написан на Питоне и распространяется как pip-пакет.

который будет собирать все зависимости под конкретную платформу, раскидывать по папочкам

https://docs.conan.io/en/latest/using_packages/con...
Together, these folders are the local cache. This is where package recipes and binary packages are stored and cached, so they don’t have to be retrieved again.


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

https://docs.conan.io/en/latest/reference/generato...
Generators are specific components that provide the information of dependencies calculated by Conan in a suitable format for a build system. They normally provide Conan users with a conanbuildinfo.XXX file that can be included or injected to the specific build system.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы