使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
What is the best way to handle source control of an external dependency for a C++ Visual Studio 2019 Solution using Git?
TL;DR:在源代码管理的上下文中处理C++Visual Studio项目中的外部依赖项的最佳方法是什么?理想情况下,我希望其他人/设备能够克隆我的存储库,使用 Visual Studio 2019 打开.sln文件并按 F5 进行编译,而无需修改外部库等的编译链接每次进行新克隆。
我想在Visual Studio 2019解决方案的C++项目中使用外部库(GLFW,https://github.com/glfw/glfw(,并且我希望该项目可以通过Git轻松共享,无论是对于其他设备和其他人。
似乎有几种不同的方法来处理此问题:
-
下载二进制文件并简单地将它们存储在我的
external/glfw
文件夹中。这使得链接和包含变得容易。缺点是这需要手动更新,我宁愿不重新分发其他人的二进制文件。 -
使用 Git 子模块/子树将 glfw 源代码包含在我的
external/glfw
文件夹中。我的问题是,由于glfw使用CMake,因此我不知道将glfw源代码编译为Visual Studio构建过程的一部分的简单方法,并且似乎无法将CMake项目添加到Visual Studio解决方案中,除非整个解决方案使用CMake,我想避免。 -
创建一个单独的存储库,仅用于编译外部库。该存储库的存在只是为了编译外部库,然后主存储库将使用 git 子模块/子树将适当的二进制文件/库获取到
external/glfw
中。这种方法的问题在于,仅仅为了编译外部库而管理单独的存储库的开销似乎过高。
方法 2 最吸引人,因为它简单而灵活,但是,我无法让它在 Visual Studio 中工作,因为我似乎无法将 CMake 项目添加到现有解决方案中。有没有办法在需要时编译外部 CMake 项目,并在我在 Visual Studio 中按 F5 时自动执行该脚本?
我建议你似乎已经部分推断出来了。 不要直接使用现有的 Visual Studio 项目/解决方案,而是将生成转换为 CMake 并使用子模块。
转换基本上需要编写一个带有构建指令的 CMakeLists.txt 文件,并且其中有一行使其遍历到子模块中。 运行 CMake 时,它将配置代码和子模块,并生成编译和链接两者的 Visual Studio 项目。
额外的好处是你的代码也将离跨平台更近一步,因为CMake可以很容易地为Mac,WSL,Linux等生成构建系统。
- 在Linux中哪里可以找到互斥、未来等的源代码
- 当vector是tje全局变量时,c++中vector的内存管理
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 如何维护资源管理器项目视图中当前可见的项目列表
- 难以理解某些人解决IOI问题的源代码
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 使用g++编译hdf5源代码
- 资源管理设计模式
- 使用"Task"函数指针队列定义作业管理器
- 如何使用C++读取另一个程序中的源代码输出
- Poco FindMySql.cmake 无法找到 MySQL 源代码
- 实现动态插件管理器
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 是否可以检索与柯南包管理器一起打包的库的源代码,以便在其中进行调试?
- 通过任务管理器创建并查看源代码创建的转储文件,如何打开
- Visual Studio 2010 源代码管理集成不适用于解决方案文件夹之外的文件
- TFS 2010 源代码管理下的 VS2010 解决方案保留C++项目时在打开时发出警告
- Libjpeg自定义源代码管理器