TL; DR: каков наилучший способ обработки внешних зависимостей в проектах C ++ Visual Studio в контексте контроля версий? В идеале я хочу, чтобы другие люди / устройства могли просто клонировать мой репозиторий, открыть файл .sln в Visual Studio 2019 и нажать F5 для компиляции без необходимости изменять ссылки на компиляцию для внешних библиотек и т. Д. c. каждый раз, когда создается новый клон.
Я хочу использовать внешнюю библиотеку (GLFW, https://github.com/glfw/glfw) в проекте C ++ в решении Visual Studio 2019, и я хотите, чтобы проект легко передавался через Git, как для других устройств, так и для других людей.
Кажется, есть несколько разных подходов к решению этой проблемы:
Загрузите двоичные файлы и просто сохраните их в моей папке external/glfw
. Это упрощает компоновку и включение. Недостатком является то, что для этого требуются обновления вручную, и я предпочел бы не распространять чьи-либо двоичные файлы.
Используйте Git подмодули / поддерево, чтобы включить исходный код glfw в мой external/glfw
folder. Моя проблема в том, что я не знаю простого способа компиляции исходного кода glfw как части моего процесса сборки Visual Studio, так как glfw использует CMake, и кажется, что это невозможно добавьте проект CMake в решение Visual Studio, если только все решение не использует CMake, которого я хочу избежать.
Создайте отдельный репозиторий только для компиляции внешних библиотек. Этот репозиторий будет существовать просто для компиляции внешних библиотек, а основной репозиторий будет затем использовать git субмодулей / поддерево для извлечения соответствующих двоичных файлов / библиотек в external/glfw
. Проблема с этим подходом состоит в том, что издержки на управление отдельным репозиторием только для целей компиляции внешних библиотек кажутся чрезмерными.
Подход 2 является наиболее привлекательным, поскольку он прост, но гибок, Однако я не смог заставить его работать в Visual Studio, так как не могу добавить проект CMake в существующее решение. Есть ли способ компилировать внешние проекты CMake при необходимости , и этот сценарий автоматически запускается при нажатии клавиши F5 в Visual Studio?