Организация файловой структуры проекта и сторонние библиотеки C++
При создании небольшого проекта чуть серьёзнее, чем hello world, с использованием одной или нескольких сторонних библиотек и системой сборки CMake, я столкнулся с необходимостью в совете и рекомендации от профессионала, как лучше всего организовать размещение файлов? Приведу примеры из других языков, чтобы стало немного понятнее, что я имею ввиду:
- В Python, для работы с библиотеками нужно просто создать виртуальное окружение и с помощью pip установить библиотеку, а интерпретатор всё найдёт самостоятельно, а морочиться с размещением файлов исходного кода - необязательно, python сам всё найдёт в своём виртуальном окружении.
- В Java немного сложнее и больше возможностей - нужно выбрать систему сборки проектов(Maven,Gradle) и указать зависимости.
- В Rust есть cargo add и Cargo.toml
Я пробовал сделать всё через vcpkg, но функционал ограничен для unix систем, а так-же настройка, перенос на другие ОС, на другие IDE(с VS 20XX на VSCode) - создаёт очень много проблем на пустом месте. Смотрел на github, как делают другие и как я понял, они просто создают отдельную папку и туда закидывают все скачанные библиотеки. Насколько это адекватная тема ? Будут ли дальнейшие проблемы с размещением проекта на github, gitlab, файлообменнике из-за большого веса ?
UPD1: Как насчёт использования Docker ?