在 Visual Studio c++ 项目中将 Eigen 外部库放在哪里?
Posted
技术标签:
【中文标题】在 Visual Studio c++ 项目中将 Eigen 外部库放在哪里?【英文标题】:Where to put Eigen external library in Visual Studio c++ project? 【发布时间】:2021-01-30 10:30:34 【问题描述】:我想将 Eigen library 添加到我的 Visual Studio C++ 项目中。我下载了 zip 并解压缩到 C:\Downloads\Eigen
文件夹。我设置了项目设置 -> C++ -> 附加包含目录。但是我的计算机驱动器中的图书馆。如果我在 Github 中推送项目,它是否可以在下载了我的项目的客户端计算机上运行?我可以把 Eigen 目录放在哪里?在我的项目中?或者有什么方法可以自动在项目中包含添加的外部库?
【问题讨论】:
你可以让Eigen
成为你仓库的子模块,然后你的仓库就会知道它的依赖。
【参考方案1】:
一种方法是在您的存储库中创建一个依赖项文件夹,并将 Eigen 作为子模块添加到该位置:
git clone --branch <tag_name> https://gitlab.com/libeigen/eigen.git
标签版本是可选的,但很好的做法。您也可以使用浅深度克隆 (--depth 1
),因为您可能不需要它的历史记录。现在,您的存储库中有一个 submodule,这是指向 Eigen 存储库中特定提交的链接。一旦您提交+推送此更改,其他人可以通过递归克隆来拉取此子模块:
git clone --recurse-submodules ...
或者,如果他们已经拥有 repo 的副本,请提取最新版本并运行:
git submodule update --init
我会在README.md
中添加一个注释,指定存储库包含子模块。
或者,您可以使用包管理器,例如 vcpkg 或 Conan。这样做的好处(缺点)是您可以避免自己构建依赖项,并且是更现代的语言所采用的标准方法。
【讨论】:
如果我在源文件夹中添加 eigen 文件夹? 这不是一个好主意,您希望将代码与其依赖项分开。现代语言通过包管理器解决了这个问题,也许你可以尝试一个用于 Cpp 的程序,如 vcpkg 或 Conan。 我从未在 Visual Studio C++ 项目中添加任何子模块。因为这是我的第一个 c++ 项目。我应该为此创建一个新的帖子问题吗? 没必要,这两种方法都有很多很好的文档。包管理器可能更简单。以上是关于在 Visual Studio c++ 项目中将 Eigen 外部库放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Visual Studio C++ 项目中将 Javascript 和 CSS 代码与 HTML 代码分开?
如何在 Visual Studio 中将用 C 编写的源代码从另一个项目包含到我自己的 C++ 项目中
在 Visual Studio 上的 C++ 项目中将 NetCDF(通过 vcpkg 安装)与 CMake 一起使用时未解析的外部符号
在 Win32Proj 中将 Qt 与 Visual Studio (C++) 集成