首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过CMake添加外部库(例如特征库)

通过CMake添加外部库(例如特征库)
EN

Stack Overflow用户
提问于 2016-06-23 19:11:44
回答 1查看 2.1K关注 0票数 3

我已经处理这个问题好几个星期了。我知道我可能只是错过了我不知道的一小步。因此,任何洞察力都将受到高度赞赏。

我正在尝试添加一些外部库,并在我的C++项目中使用它们。但似乎不知道怎么做。我读了网上所有关于增加外部图书馆的帖子,但我相信我遗漏了一些东西!

比方说,我想添加一个简单的库,比如Eigen (一个只标头的库)。我复制并粘贴了包含项目子文件夹中所有文件的文件夹。我调用了子文件夹ThirdPartyLibraries。

代码语言:javascript
运行
复制
INCLUDE_DIRECTORIES("${MAINFOLDER}/ThirdPartyLibraries/eigen")

还有什么需要我做的吗?

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

我也为XGBoost做过类似的事情。我的代码构建可能没有错误,但前提是我不引用库中的任何函数(基本上只是将库添加到我的项目中而不使用它)。当我尝试使用任何一个函数时,都会出现关于“未解决的外部符号”的错误,这使我认为在添加库时遗漏了一些东西。

我没有将任何库添加到我的C++代码中。所以,如果你能保持简单的解释,那就太好了!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-05 19:51:28

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

添加特征库非常简单,因为它只是头文件。您只需复制并粘贴项目目录中的任何地方的所有头文件,并使用包含目录。之后你应该会没事的。

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

代码语言:javascript
运行
复制
TARGET_LINK_LIBRARIES(ProjectName libxgboost)

然后,您必须处理并将包含目录(包含头文件)从xgboost目录粘贴到项目目录中的某个位置。除了libxgboost之外,您还必须包括rabit和xgboost库。因此,在复制和粘贴libxgboost.lib时,只需复制和粘贴它们,并使用‘target_ link _target’链接它们。

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

希望这能帮助那些很难让它发挥作用的人。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37999915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档