在 visual studio 2017 IDE下配置 Libigl 里的 tutorial
这个学期开始学习3d图形处理, TA 在第一节tutorial上来就给了一堆东西, 让我这个菜鸟有点找不到头脑, meshlab, libigl, cmake 连番上阵, 感觉很虚,也没记住多少,最蛋疼的是感觉周围同学和TA都在用mac, ta 的演示也是在mac上的, 很心酸.
课程结束后赶紧上网找资料才勉强搞懂Cmake是干啥的,至于如何在visual studio上配置, 找到的全是 visual studio 2015 的文章 (目前是2018年, 博主版本是VS2017), 而且每个人的情况都不太一样, 不过好消息是libigl官网只说最低要求是 visual studio 2015, 2017 是没有问题的(如第二张图所示).
首先是下载cmake, 对于windows用户, cmake 比价偏爱吧, 还提供了图形操作界面, 相关内容可以参考这个文章.
如果你更倾向与打命令行的话,需要配置环境变量, 相关内容,可以参考这篇文章.
貌似第一篇文章指出这两个功能可以同时实现,我不深究了,总之你能cmake就行.
.
接下来就是 Libigl了, 下载libigl推荐用git命令, 直接下载zip文件的话, 会缺失一部分文件的, 博主亲自试过....... 不知道什么是git 同学要加油了, 比如说博主, 虽然有GitHub账户两年多了, 但是只是当时凑热闹注册的, 一直也没有养成上GitHub的习惯, 更别说上传自己的项目和看别人的项目了, 说来惭愧, 博主大部分时间都是面向百度编程的.....( git 和 github 是两回事.)
相关内容,可以参考这篇文章. 博主友情提醒, 安装时候仔细看内容, 一股脑点下一步不可取.
安装完git 后, 就要用git clone libigl 文件了, 相关内容,可以参考这篇文章, 楼主一开始也是照着这个文章弄得, 它得作者写的挺好的,虽然我并没有出现他最后一段出现得错误,我估计是libigl更新了, 而这篇文章得作者当时就没有那么幸运了.
在这里我要郑重提醒, libigl 只支持 visual studio 2015 版本以上编译器, 而且必须是64位的, 这一点很重要!!!
上面那篇文章其实也提到了,但是我当时不知道为什么没有太注意, 关注点都在其他的文章上面了. 比如说这位妹子的文章让我惊恐万分, 她在有VS2017的情况下依旧选择安装VS2015, 然后她选择用命令行生成makefile文件(windows 下会是.sln解决方案文件), 而ta给我们演示的也是用打cmake命令的方式, 这让我一时不知所措, 纠结了许久.(因为mac没有图形界面??)
其实两种方法都可以的, 但是正如我提醒的那样, libigl在VS上只支持64位的编译器, 所以在windows下相关命令和其他平台略有不同, 打cmake命令时要指定VS版本和64位架构. 如下图所示, 当然VS版本要根据你自己的来.
不过博主并没有通过打命令的方式来生成解决方案文件的,我直接用Cmake-gui,就是上面提到的图形操作界面(gui)来生成的,注意Configure时要选择"vs 某某版本 64位", 配置时的图不好截,给一个配完后的图吧.
之后generate就会生成解决方案文件, 我这一步很顺畅, 但是有些人会在这一步出错, 我猜想是其他库和软件的问题. libigl 并不是一个单独的库, 还依赖其他的库, 图形计算时要用到另外一个C++的向量库Eigen, 这个官方文件也提到了, 请务必提前下载.
下图同时也是对上面打命令方法的一个总结, git 文件, 进入tutorial文件, 新建build文件, 进入文件, cmake ../ (处理makelists文件), 注意这里应该要指定VS相关数据, 这个官方文件是面向所有平台的,这也是cmake工具的意义所在, 同时libigl里的makelists.txt 文件会自动帮你配置好相关库, 在cmake_gui里就是那些红色的东西了.
make命令对windows用户应该不需要, 这里就可以进入VS了.
其实libigl不只仅仅依靠一个eigen库而已, 要想完全使用libigl, 要配的东西有很多, matlab, GLFW都有关系, 如果你是想在vs上从一个空项目开始构建图形的话, 配置建议参考这位老哥的博客(英文), 我目前进度还只是限于tutorial, 所以还没有尝试这以外的东西.
其实这位老哥的文章已经说的很详细了, 但是我在使用cmake_gui时并没有出现任何和配置错误和生成错误, 这让我有点心虚, 同时这位博主还说到可以不勾选 LIBIGL_USE_STATIC_LIBRARY, 但是我不勾选后就会出错, 我只能说我疑心太重了....
总之我第一次没成功后, 就开始狂发邮件混炸TA, 同时开时尝试其他方法, 但是想想邮件又有多大作用呢, TA给了一些指导性意见后, 我第二次又没成功, 过了几天后的今天本应该做其他的事的, 但是不知到怎么开始了第三次尝试, 在ta的"废话"指导意见下, 又做了一遍cmake的"hello word", 做libigl的"helloword"又需要看eigen, 看了半天eigen的文件后尝试发现, 从空项目开始配置没有没有问题, 然而我把代码贴到tutorial的项目中就编译错误, 即使我配置了正确的项目库, 最后误打误撞发现我在VS项目中调不到64想到可能是cmake生成时的问题, 最后才结决, 说多都是泪.
最后是玄学时间, 如果你在尝试libigl tutorial时除了上述元素外还有问题, 推荐安装matlab(90%相关), 还有我记得好像在哪看过好像vs安装时选某个选项才会好像集成GLFW,等等你都可以试试, 祝你捣鼓愉快.
--------------------------------------------------2018.1.20更新-----------------------------------------------------------------
直到我上第二节课时我才意识到我上次的东西有缺漏,如下图所示,我的上次的界面没有菜单选项,问问了TA才知道我没有将Nanogui menu 选项打开, 好吧, 这次我准备用命令行的方式重新弄一遍.
整个流程思想还是不变的, 首先要保证有eigen 和 libigl 文件, 打开tutorial 里的cmakelist.txt 文件, 在 Nanogui menu 处修改为ON.
cmd里进入tutorial 文件, 创建build文件, 进入build文件.
用cmake ../ 命令, 参数是 VS 64位编译器.
完成, 打开解决方案文件即可.