美文网首页程序员
机器学习库shark Windows 10安装

机器学习库shark Windows 10安装

作者: 李耕_嘿嘿嘿黑龙江哈哈哈哈尔滨 | 来源:发表于2020-06-23 20:22 被阅读0次

本人知道shark在安装时会有很多困难, 所以我尽全力分享自己的经验和尝试, 希望能帮到大家!


配置 shark 3.0+Windows 10+VS 2017+boost 1.73.0+cmake 3.18.0-win64-x64

上面这个配置是本人尝试成功的配置, 曾经尝试替换boost 1.73为 1.59 结果在cmake部分失败,无法configure成功.

上述环境中, boost和cmake均是目前最新版本(2020/6/23), 可以放心食用.

按照顺序来 我们先编译boost库, 随后下载cmake, 生成shark项目, 最后编译项目, 同时在其它项目中调用shark库.


boost库编译

之前提到了, boost 1.73.0是我用的版本, 下载得到一个压缩包解压得到下图

index.html是指导网页

打开本地网页, 然后界面如下

点击getting start按钮

点击getting start后跳转到相关说明的网页.

后续说明的内容总结起来就是, 一部分boost模块只需要引用头文件就可以, 另一部分你需要编译出静态库.(这不意味着你有概率不需要编译, 请不要心存侥幸)

编译过程很简单, 我按照下图的操作执行的, 没有碰到任何问题.

编译过程

开启cmd, 执行文件夹中bootstrap.bat然后等, 要等一会

然后再执行 .\b2再等然后就完事了.

记住任务结束后的两个地址, 我们会在后面使用(一个是root,一个是lib lib在root上加stage/lib)

ps. boost 我看很多别的博客都采用b2或者bjam去自己指定参数编译, 我没有采用这种办法, 但是实际证明后续也一切正常, 请放心使用.


cmake安装

cmake不需要安装, 直接下载在本地解压然后打开cmake_gui就可以用了.


正式开始编译shark

首先我们把shark3.0下载解压好, 另外准备好一个空文件夹用来放接下来会产生的vs项目.

打开cmake_gui填好文件夹位置

创造两个entry

 BOOST_ROOT 和BOOST_LIBRARYDIR属性都选择path, 内容分别为boost安装时要保存的两个路径.

CMAKE_INSTALL_PREFIX决定的是你生成的shark库所在地, 默认c盘位置是普通权限无法读写的, 请换地方.

然后configure选择自己vs版本, 其余选项不管(采取默认).

确定后, 正常会出现报错, 显示cmake找不到boost库, 没事这时候只要把Boost_USE_STATIC_LIB点上勾, 再次点击configure即可.

随后entry目录被更新, 下面提示栏会显示有两项没有找到, 但是不需要去管, 没有问题.

直接再次点击configure(也就是按照默认entry目录), 然后一切正常, 继而generate, 最后打开vs项目.

那么到这里shark的vs项目就被生成完了, 我们第一步也就做好了

第二步

通过vs来编译生成shark库, 我们如果想在其他项目中使用shark内容, 需要两个东西, 一个是include目录, 告知编译器shark存在哪些库, 另一个是lib静态库, 用于编译时链接二进制文件.

首先不要直接生成整个shark解决方案, 这个是行不通的, 并且240个项目耗时很长, 你会出现无法打开shark_debug.lib的问题, 还有其余的报错. 这是很多其他博客里轻描淡写但实际上根本做不到的一点.

要解决这个问题, 首先我们找到项目中的shark工程

shark工程

我们首先需要通过单独生成shark工程来生成shark_debug.lib, 这样其他项目才能够正常编译.

你可以试着生成它, 会报错, 错误是size()函数出错.

这里, 打开shark工程中的源码的RNNet.cpp, 寻找调用size()函数的地方, 添加shark::在前面, 解决size报错.

再次生成, 一切顺利那么shark_debug.lib应该就已经存在.

如果依旧有问题, 可以参考(https://blog.csdn.net/weixin_40162095/article/details/104348828)这篇中对项目属性的设定.

我们重新考察项目

CMakePredefinedtargets的INSTALL工程

实际上 INSTALL工程是cmake对大项目编译自动生成的模块, 我们通过编译这个工程便可以得到所需要的include目录和lib包. 这是其他项目调用shark所需的全部内容

所以接下来, 我们生成它.

首先同样解决size函数报错, 然后对shared_ptr标识符无法识别前加boost::

最后如果有setlocal报错, 请把cmake时CMAKE_INSTALL_PREFIX修改为正常权限可以读写的地方.

那么解决这些问题后, 你查看CMAKE_INSTALL_PREFIX目录, 你会发现

install生成目录

其中lib包含我们需要的lib文件(实际上正是我们的shark_debug.lib), include则是我们所需包含目录

那么到这里实际上我们已经完成了shark的安装.


所以其实shark安装的核心就是install模块, 只要我们能把它成功执行, 那么一切顺利, 如果不能直接安装, 才去考虑曲线救国.


在其余项目中使用shark库

打开vs的属性设置

属性管理器在视图里开

我们需要设置包含目录和依赖lib, 分别在c/c++常规和链接器里设置

在c/c++常规指定include目录

根据需要添加boost, 然后注意我shark包含目录后续有include\shark并不是单纯的include, 我直接用include目录结尾, 则代码include语句需要加两个shark 类似(#include <shark/shark/Data/Csv.h>)

添加shark_debug.lib所在目录

boost也是按需填写, 填入之前所说lib目录即可.

填入shark_debug.lib

这些完成后, 就大功告成了, 尝试自己引用shark库文件编译, 应该一切正常.


总结

shark作为c++库, 比pytorch等框架麻烦多了, 但是实际上用起pytorch c++接口也不见得过程简单在哪里, c++语言特性决定了这安装过程的繁琐. 希望本篇能为各位在安装方面提供些许帮助, 如果真如此那么我花费的时间也就更具有意义.

相关文章

网友评论

    本文标题:机器学习库shark Windows 10安装

    本文链接:https://www.haomeiwen.com/subject/uyghfktx.html