在 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++) 集成

在 Visual Studio 2008 中将应用程序构建为发行版时出现问题 - C++

如何在 Visual Studio 2015 中成功导出 C++ 项目模板?