您的位置:首页 > 其它

在VS2019用Cmake编译shark,各种坑,前前后后网上博客遇到地各种问题我都遇到了,并最终解决。

2020-03-01 07:18 429 查看

在VS2019用Cmake编译shark

总体步骤:装Cmake->装boost->下载shark->cmake编译shark产生.sln文件->vs2019编译该shark的sln文件

  • 本来一开始是要在win7,vs2013跑shark的,但是我运行Cmake时出现如下错误:

  • 于是开始装boost(安装步骤可以去我的收藏夹去找,这里只讲遇到的问题怎么解决的),出现了一系列问题,下面讲一讲这些问题该怎么解决:问题一“拒绝访问”:

  • 解决方法:在c盘下找到cmd.exe,右键以管理员身份打开:

  • 解决了一个问题出现了新的问题:

  • 应该是环境变量PATH的路径不能用“”括起来和路径末尾不能有\。这个问题解决了。 进而又出现下面这样的错误:

  • 这个好办,找到cl文件位置,将它的地址添加到环境变量。又出现了新问题:


我是真的不知道怎么办了。。。其实我有去bootstrap.log看问题,百度了一下反正没解决。

于是我换了一台电脑:联想小新pro13,win10+vs2019:
按照这个步骤:https://blog.csdn.net/qq_24663135/article/details/100888553安装boost的所有问题都没有了,然后就装好boost了。
安装过程展示:
第一步bootstrap.bat结果:

第二步b2.exe结果(运行要一段时间)(有人说

为了万无一失,运行 bjam --build-dir=build-tmptoolset=msvc --build-type=complete
stage ,上面的命令是生成所有可能的 单、多线程、静态、动态库

来自于https://www.geek-share.com/detail/2597725055.html由于我后面没有再遇到问题了,我也就没试,直接b2.exe):

boost安装完成,记住上面两个目录,后面要用,第一个是头文件目录,第二个是库文件目录,你要用boost库,把这两个文件拷贝走就行了。

接下来继续一开始提到的cmake编译shark

我的cmake是CMake3.16.4,这里shark是shark-3.0.0。打开cmake-gui,点击configure,我选择的Visual studio 2019,其实我是默认的,电脑里就这一个VS,其它选项默认。

where is the source code‘’填shark-3.0.0的根目录,我的是D:/zaxaing/Shark-3.0.0。新建一个build文件夹,该文件夹用来装待会编译产生的文件,“where to build the binaries”填刚才新建的build目录,我的是D:/zaxaing/bulid。然后点击configure出现下面的错误:

解决方法:由于之前我产生的boost是static型的,所以“Boost_USE_STATIC_LIBS”后面要打上勾(注意只有第一次configure后框框里才有这个Boost_USE_STATIC_LIBS出现,才可以打上勾)。

再点击configure问题依然存在,显示could NOT find Boost。继续,点击Add Entry,新建BOOST_ROOT和BOOST_NO_SYSTEM_PATHS 。


但是添加好之后,我点击还是会出现错误(也可能直接就成功了,我之后再编译了几次到这一步直接就成功了),错误如下:

这个时候我就崩溃了,不知如何是好,于是开始瞎试,突然灵机一动,操作如下(非常关键的一步):点击File,点击delete。

因为之前一直在configure,可能生成了一些错误的cache文件,得delete掉,重新configure,然后就大功告成,正确结果如下:

再点击generate,就只多了一行Generating done,结果如下:

此时build文件下就产生了.sln文件,这就是我们想要的:

在VS2019中编译这个文件

双击这个.sln文件,打开之后直接编译,编译大概十分钟,产生如下结果:

什么都没改,又运行了一次,产生如下结果:

然后在网上找了一堆配置方案都不能解决我的bug,一直是两百多个错误。我自己琢磨出来的解决方案(指配置添加这些文件这方面):

按照上面的方式打开属性管理器(我试过了直接点击项目->属性是没有任何反应的),点击下面这个扳手:

1.包含头文件目录,一个是boost根目录,一个是build文件里生成的includ文件夹(注意对应你自己的目录):

2.包含库目录,同理,如下:

编译,错误就只有个位数了,我就没截图了。
3.设为启动项
苦思冥想,继续百度,发现除了csdn有讲关于shark安装编译的了,就没有其它平台在讨论这个问题了,这也是我为什么会在这个上面写我的编译过程,供大家参考。这篇博文帮了我https://blog.csdn.net/qq_23437421/article/details/97801179设为启动项,我也不知道这是个什么操作。若出现shark::size(),对重载函数的调用不明确,就把出错的size()前添加shark::重新编译即可。成功后build下会生成include,bin,lib文件夹,之前*无法打开文件“…lib\Debug\shark_debug.lb”*错误全部消失。(未编译成功之前…lib\Debug是个空文件,所以肯定是无法打开该文件的)。


再编译,会出现这个不影响最终结果的小bug:

暂时还不知到是什么问题,如何解决,知道的朋友欢迎再评论区评论知道的朋友欢迎在评论区评论或者私聊我,summer十分感谢。
不管它,点击继续,得到了最终我们想看到的结果,如下:

大功告成。

遗留问题:

想要在旧电脑win7,vs13上跑shark,于是我把在新电脑上编译好的boost文件拷贝到旧电脑上,用cmake按照我上述步骤进行,cmake就产生了如下错误,无法继续,暂时还不知到是什么问题,如何解决,知道的朋友欢迎在评论区评论或者私聊我,summer十分感谢。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
<summer> 发布了11 篇原创文章 · 获赞 5 · 访问量 1591 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐