IMSTK在Windows下的编译安装
IMSKT:Interactive Medical Simulation Toolkit
a free & open source software toolkit written in C++ that aids rapid prototyping of interactive multi-modal surgical simulations
本文将在Windows系统下编译该框架: 官方的十个字指导过程????
零、工作环境
工具 | 版本 |
---|---|
操作系统 | windows 10 |
IMSTK | gitlab/master |
Git | 2.28 |
VTK | 9.0 |
Cmake | 3.18.2 |
Visual studio | 2017_community |
一、准备
1.1 Git 以及 SSH key
-
Git
用于从gitlab下载源码及依赖包,自己找教程安装就行
-
SSH key
SSH key提供一种于Gitlab通信的方式 -
生成新的SSH key
1.在 CMD 命令行中输入ssh -****** -t rsa -C "你的邮箱@xxx.com"
2.输入后会提示要求输出 passphrase 这里直接回车用空代替就行
3.完成后在C:\Users\你的用户名\.ssh
目录下就会出现一个 id_rsa.pub 的文件 这里面就是公钥了
注: -t 用来指示要生成的**类型, 这里用了rsa
-C用来标识**,这里输入了自己的邮箱,其他也行, 我这边直接用了Github的账号邮箱,登陆Gitlab的时候GitHub账户登陆就行
- 用记事本打开 id_rsa.pub 文件 复制里面的内容 登陆 然后复制到**那里
1.2 下载IMSTK源码
- 在合适目录下打开GItBash或powershell输入:
git clone [email protected]:iMSTK/iMSTK.git
完事之后就得到源码了,接下来就是编译
二、编译
2.1 CMAKE
- src 目录 build 目录选好 , Configure
-选项:
选项 | 功能及选择 |
---|---|
iMSTK_BUILD_EXAMPLES | 可以先编译完不带exa的回头再编译例子 |
iMSTK_BUILD_TESTING | 个人认为类似VTK的testing 大可不必编译 |
USE_SYSTEM_VTK | 使用你自己编译的VTK(我这边这条路没成功) 如果勾选,需要指定VTK_DIR 用来找 vtk-config.cmake |
iMSTK_USE_OpenHaptics | 力反馈,目前我还没编译该项 |
- Configure done
- Generate done
- Open Project
2.2 VS
-
Release ×64 直接build solution
-
全部成功,没编译例子的话再去CMAKE一下回来生成一下IMSTK这个工程就行了
-
完事后在
D:\Tools\iMSTK\build\install\bin
目录下会出现一大堆dll以及编译生成的example可执行文件
例:Example-CD-ManualCDWithOctree.exe
- **
报错解决指南:
**按照我上面的配置及config选项,报错都是下载问题
写在前面:手动并不会加速下载,好处是你可以在下载失败后一直下载直至成功。
1.下载External中的各种依赖库出错:
查看控制台找到下载出错的文件的下载地址,手动下好放到所需目录中
2.SHA相关类型的文件下载出错:
按照1方式下好,然后
注意
,取下载地址中的SHA编号,重命名下好的文件,此时不是放到要下载的地方了,而是要放到D:\Tools\iMSTK\build\Innerbuild\Objects\SHA512
这个目录下。该目录下必须有该文件才会检查通过,否则就会继续重复下载。
3.编译过程中卡住不动,控制台没任何输出:
大概率是在从gitlab仓库获取VTK源码资源,git过程中不显示下载进度,所以控制台无输出,耐心等待下载完成或连接失败,此时你并不能终止solution build 也关不掉 VS,原因就是后台进程中VS还在调用Git进程,你可以都杀死这些进程强行关闭。
注意
:此过程不能通过方式1下载,因为它下好之后会生成一个避免重复下载的邮戳D:\Tools\iMSTK\build\External\VTK\stamp\VTK-gitclone-lastrun.txe
手动从仓库下好只有源码;
当然 这个邮戳的东西和同目录下VTK-gitinfo.txt
文件的内容是完全相同的,如果你实在是编译的时候下不下来,那就考虑手动下载下来然后自己放个这个邮戳试着骗一下编译器。
4.其他情况下出错
- 4.1 下载源码时间
博主同样操作过程在十天前并不能编译成功,于
2020/09/16
重新下载了源码进行然后成功
即:master分支在不断更新中,部分源码以及依赖包发生了改变,这个酌情自己考虑出错问题
但是其他branch下文档编译说明中也是给的下载master分支的,没仔细去找是不是有个分支是稳定版?
- 4.2 勾选USE_SYSTEM_VTK
勾选该选项理论上意味着可以用自己之前电脑编译过的VTK环境,只需要给iMSTK VTK的路径即可,但是在实际生成example的过程中,出现了大量关于VTK的LNK2001 LNK2019错误,而这两类错误大概率是由于找不到 lib 导致的,偏偏iMSTK编译的是静态链接库(为什么是这个选项我也不知道),项目属性是没有链接器这个选项的。
打开单个example的解决方案,添加VTK的 lib 后可以编译生成成功,但是在运行的时候出现VTK函数报错或无法连接到动态链接库
的错误,暂未找到有效解决方案(已添加相关 dll 文件到运行目录下还是同样报错)。
最后再放两个例子截图:
加油铁子????