Какие внешние зависимости и как распологать в проекте?
Я пишу библиотеку (для учёбы) которая в свою очередь использует стандартную библиотеку, а также GLFW. Правильно ли я сделаю, если создам папку external и запихну туда папку GLFW с соответствующими библиотеками. Стандартную же библиотеку я класть в проект не буду, так как подразумевается, что она есть у всех программистов на С++.
Правильно я поступлю, если всё так сделаю, или можно по другому? P.S. Делаю compile Lib.
подразумевается, что она есть у всех програмистов на С++
Подразумевается, что программисты сидят на разных операционных системах (как минимум, Linux, macOS, винда) и пользуются разными компиляторами. Даже если какая-то библиотека есть, её версия может отличаться. В проекте нужно хотя бы указать версии всех использованных библиотек, название и версию компилятора, которым вы успешно собирали проект, чтобы минимизировать вопросы "а почему у меня не собирается?"
Если проект для линукса (или другого никса), то лучше ставить зависимости из стандартных репозиториев, а не включать в проект. Если библиотеки в стандартных репозиториях нет, то уже возможны варианты.
Создавать для зависимостей отдельную папку в проекте и складывать их туда - нормальная практика, если предыдущий вариант по каким-то причинам не подходит. В этом случае, если используете систему контроля версий (git), то добавляете зависимость как субмодуль, с привязкой к родному репозиторию.
Рекомендую использовать vcpkg (можно и conan) или же docker-контейнер с нужными зависимостями для сборки. Сам генератор систем сборки CMake.
Добавлять для этого подмодули или же использовать системный менеджер зависимостей можно конечно, но на дистанции это не самое удобное и переносимое решение. Так что я не рекомендую.
При необходимости могу подробнее расписать достоинства и недостатки.