通过 CMake 添加外部库(例如 Eigen)

2023-12-11

我已经处理这个问题几个星期了。我知道我可能只是错过了一个我没有意识到的小步骤。因此,任何见解都将受到高度赞赏。

我正在尝试添加一些外部库并在我的 C++ 项目中使用它们。但似乎无法弄清楚如何。我阅读了互联网上有关添加外部库的所有帖子,但我相信我错过了一些东西!

比方说,我想添加一个简单的库,例如 Eigen(仅包含标头的库)。我将包含所有文件的文件夹复制并粘贴到项目的子文件夹中。我将该子文件夹命名为 ThirdPartyLibraries。

INCLUDE_DIRECTORIES("${MAINFOLDER}/ThirdPartyLibraries/eigen")

我还有什么需要做的吗?

现在,假设我想添加另一个库,例如 XGBoost(它具有头文件和源文件)。会有什么不同呢?

我为 XGBoost 做了类似的事情。我的代码构建时可能不会出现错误,但只要我不引用库中的任何函数(基本上只是将库添加到我的项目中而不使用它)。当我尝试使用任何函数时,我收到有关“无法解析的外部符号”的错误,这让我认为在添加库时我丢失了一些东西。

我没有在我的 C++ 代码中添加任何库。因此,如果您能保持简单的解释,那就太好了!


因此,我解决了这个问题,并认为我可以将解决方案分享给其他可能遇到此问题的人。

添加 Eigen 库非常简单,因为它只是头文件。您只需将所有头文件复制并粘贴到项目目录中的某个位置并使用包含目录即可。之后你应该就好了。

关于 XGBoost 链接,他们刚刚添加了该项目的 cmake 文件。因此,您需要做的是在 Visual Studio 中构建该项目。构建后,您将获得 .lib、.dll 和 .exe 文件。您应该只需要 .lib 文件。将它们复制并粘贴到项目目录中的某个位置,然后将其链接到主项目,如下所示:

TARGET_LINK_LIBRARIES(ProjectName libxgboost)

然后,您必须将包含目录(包含头文件)从 xgboost 目录粘贴到项目目录中的某个位置。除了 libxgboost 之外,您还必须包含 Rabit 和 xgboost 库。因此,只需在复制和粘贴 libxgboost.lib 时复制并粘贴它们,并使用“target_link_directories”链接它们即可。

当您使用库中的任何函数时,请确保包含头文件。

希望这可以帮助那些在工作中遇到困难的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 CMake 添加外部库(例如 Eigen) 的相关文章

随机推荐

  • Xcode 配置文件位置

    Xcode 8 3 3 中的配置文件位于项目和 或文件目录中的什么位置 对于旧版本的 Xcode 它们的位置 Library MobileDevice Provisioning Profiles 配置文件不与项目一起存储 Xcode 有一个
  • 在没有 Turbolink 的 AJAX 之后在 Rails 中触发 js

    我有一个rails4应用程序 由于我不擅长 js 所以我关闭了 TURBOLINKS 我读了很多文章 但我仍然不知道如何组织我的 javascript 文件 目前我在 AJAX 附加后触发 js 代码时遇到问题 我有一个任务列表 索引页 如
  • Facebook 打开图表,过滤好友列表数组

    我希望我的应用程序能够过滤我使用开放图获得的朋友列表 登录我的网站的人只能看到他们也使用我的应用程序的朋友 我在 Quora Thumb 等许多应用程序上都注意到了这一点 如何使用 php 来完成呢 当您使用 FQL 查询时可以轻松完成us
  • 如何在 django 导航栏下拉列表中显示活动链接?

    我有一个导航栏菜单 其中包含链接列表 我想在用户位于页面上时显示活动链接 到目前为止 我已经设法使用没有这样的下拉菜单的链接来做到这一点 但我似乎无法正确使用下拉链接 如果用户位于下拉链接的页面上 则导航栏上的父链接会突出显示 如下所示 任
  • 使用 AVMutableComposition iPhone

    我正在使用下面的代码 按顺序流式传输两个视频 但它在模拟器中没有显示任何视频 它完全是空白的 另外我怎样才能找到这两个视频 例如 如果一个视频时长 2 分钟 第二个视频时长 3 分钟 现在我需要获取这些视频的总时间并进行搜索 当我将滑块滑动
  • 将注释的标题设置为当前地址

    我想获取当前位置的地址并将其设置为注释的标题 但这没有用 我认为这是因为阻塞 但我不知道如何解决它 任何帮助将不胜感激 最相关的代码如下 WhereAmIAnnotation h import
  • 将脚本插入 iFrame 的标头,而不清除 iFrame 的主体

    我希望将脚本添加到 iFrame 的标头 同时不丢失 iFrame 正文或标头中包含的所有内容 这是我现在所拥有的 它确实使用新脚本更新了 iFrame 但它会清除 iframe 中的所有内容 而不是附加我想要的内容 谢谢 乙 Find t
  • Espresso:为什么选择后旋转器不关闭?

    我有一个关于在 Spinners with Espresso 中选择项目的问题 或者更准确地说 选择有效 但之后视图断言失败 因为微调器仍然打开 假设我有一个非常简单的活动 其中包含一个微调器和一个显示选择的文本视图 如下所示 现在 我编写
  • 创建带有导航栏和后退按钮的模态视图

    我想创建一个带有导航项的模式视图 屏幕截图中的右侧视图 并且我希望它有一个 后退按钮 我的应用程序是 TabBar 应用程序 我不希望此视图有选项卡栏 但我想使用类似于 push 类型的 segue 加载上一个视图 屏幕截图中的左侧视图 我
  • 如何从自定义列表在 Room 中创建 TypeConverter?

    我做了一个 TypeConverter 但出现错误 无法为类创建转换器 models lastanime EpisodesEntityfor 方法 EpisodesApi getEpisodes 我无法完全理解如何制作 TypeConver
  • Python文件权限中的Zipfile

    i used zipfilelib 从 zip 中提取文件 现在解压目录后我发现我的文件的权限已损坏 import zipfile fh open sample zip rb z zipfile ZipFile fh print z nam
  • 如何更改 Grails 中的 joda--time 默认日期时间格式

    我正在使用 Grails 2 0 3 groovy 1 8 6 和 joda time 1 3 1 和 joda time templates 插件 一切都很完美 但我想更改日期和时间的显示格式 我怎样才能做到这一点 每个域都是支架式的 因
  • 如何在 iOS >= 4.2.1 Mobile Safari 中自动播放媒体?

    除了用户执行的单击事件的处理程序之外 我似乎无法在 iOS 4 2 1 上的 Mobile Safari 中播放音频媒体 即便如此 如果player play 以任何异步方式调用 ajax setTimeout等 它不起作用 我试过打电话p
  • 使用 Visual Studio 2015 Update 3 创建的 UWP 应用程序包无法安装在手机上

    使用 Visual Studio 2015 Update 3 创建的发布模式 appxbundle 文件无法安装在 Windows Phone 上 这在更新 2 中有效 在手机上安装了现场医疗兵 最终发现了错误 Windows cannot
  • Python 元组列表,需要解包和清理

    假设您有一个列表 例如 x Edgar Robert 获取字符串的最有效方法是什么 Edgar and Robert 例如 并不真正想要 x 0 0 简单的解决方案 并且在大多数情况下是最快的 item 0 for item in x or
  • 一个主键与另一个主键相关可以吗?

    这是我的 ERD 的一部分 Orders 表中的 OrderID 与 Order Details 表中的 OrderID ProductID 主键相关 我不认为主键可以与其他主键关联 但我不确定如何关联这些表 让它们既是主键又是外键 您似乎
  • 与 oracle 通信时应用程序崩溃,除非可执行路径包含空格

    我们的 NET 应用程序存在 x 文件问题 或者更确切地说 混合 Win32 和 NET 应用程序 当它尝试与 Oracle 通信时 它就死掉了 消失了 前往天空中那片巨大的黑色虚空之中 没有事件日志消息 没有异常 什么也没有 如果我们只是
  • TO_DATE函数时区解析错误

    我在尝试解析 Oracle 中的日期时遇到问题 TO DATE Fri May 16 14 30 57 EDT 2014 DY MON DD HH24 MI SS TZD YYYY Error ORA 01821 无法识别日期格式 时区出了
  • Fortran 中的自动类型转换(类型转换)如何工作?

    我正在使用 gfortran 编译器 还请告诉我 gfortran 在执行自动类型转换 类型转换 时是否使用 Fortran 标准以外的其他内容 赋值由 Fortran 2008 第 7 2 节定义 值得注意的是 Cl 7 2 1 3 第
  • 通过 CMake 添加外部库(例如 Eigen)

    我已经处理这个问题几个星期了 我知道我可能只是错过了一个我没有意识到的小步骤 因此 任何见解都将受到高度赞赏 我正在尝试添加一些外部库并在我的 C 项目中使用它们 但似乎无法弄清楚如何 我阅读了互联网上有关添加外部库的所有帖子 但我相信我错