有关编译3d Slicer遇到的一些坑
研究生学习用到了3d-slicer的一些功能,需要对3d-slicer界面进行改造,经历了5天的编译最终运行起来了主界面,别问我为啥时间那么长,谁弄谁知道,git的那个慢啊。下面介绍下我的编译过程,和我在编译中遇到的一些坑。
首先编译所需工具和版本:
3D-Slicer 版本 4.11 2020-8-12最新版
Cmake 版本 3.18.0
QT 版本 5.14.2
git 版本 2.27.0
SlikSvn 版本 1.12.0
Python 版本 3.6.8
系统 版本 W10.00.18362.0001
编译器 VS2017社区版
编译过程完全参照官方的文档
官方文档简单的翻译
这一部分是要求编译的环境版本号,大家可以按照的我版本选择,可以选择高版本,但是QT要和VS配套,要用VS2019就必须要安装QT5.15的msvc2019_64。同时QT必须安装QTWebEngine和QTScript。NSIS是打包时用到的软件,可以选择安装。
这一部分是编译前的一些准备工作:
1、创建编译的路径如: 源码路径 C:\d\s4 在此文件夹下存放源码;
build路径 C:\d\s4D Debug版本在此路径下编译
这里官方要求路径尽可能的断,应为嵌套关系可能会导致最终文件路径超过50字符而导致编译的失败。同时要求将Debug和Release编译版本分开,不能使用用一个编译目录。
2、下载源码到源码路径下: cmd切换到源码路径下执行 git clone https://github.com/Slicer/Slicer.git
3、配置信息: 打开源码路径的 Utilities 目录,右键选Git bash here ,执行 ./SetupForDevelopment.sh
这一部分就开始正式的编译了:
1、打开Cmake-gui 配置源码路径和编译路径如
2、添加Qt5-DIR选择path格式,定位到 ~\QT\5.14.2\msvc2017_64\lib\cmake\Qt5 这个路径因人而异。
3、点击configure,选择 vs 2017,版本选择x64 点完成。
4、(坑1)如果遇到错误 Could NOT find Patch (missing: Patch_EXECUTABLE)
解决方法:配置图中黄色箭头处,定位到 ~\Git\usr\bin\patch.exe git安装目录因人而异
5、(坑2)解决上面问题后再次configure 可能遇到:error: “Couldn’t resolve host name”
解决方法:查看是否有 CMAKE_USE_OPENSSL 选项,有就打钩,没有的话添加
然后修改黄色箭头指向的文件
把这个url 改成https://baidu.com 保存后再次configure
6、直到没有红色选项,成功后点击generate 生成,这一步一般没错,完成后点击 open Project,打开工程。或者手动打开编译目录下的 Slicer.sln文件
7、接下来将 ALL_BUILD设置为启动项目,右键点击生成。这将会是个漫长的过程,期间会下载10个左右的包,我这边速度很慢,尤其是git clone的时候,git失败的小伙伴可以网上搜索下git的加速方法,试过发现失败次数减少,但是速度还是很慢。接下来我简单介绍下我在生成过程中遇到的几个问题。
坑3:VTK项目中遇到 无法识别的符号,imp_py 开头的一些函数。这里忘记截图了~
错误原因,VTK中的 \VTK-build\Wrapping\PythonCore\vtkWrappingPythonCore.vcxproj 项目会需要用到系统安装的python模块。一般都是cmake定位,当你选择编译Debug版本,但安装的版本没有对应的python3.6_d.lib的时候会报错。
解决方案:重新安装新的python后解决。
坑4:python-dicom-requirements 报错 error MSB6006: “cmd.exe”已退出,代码为 1
错误原因,D:\d\S411R\python-install目录下 pip 的安装失败,
解决方案:用我们系统安装python\Scripts\目录下的 pip.exe 等替换掉 D:\d\S411R\python-install 下的程序可解决。
坑5:Slicer 项目报错 error MSB6006: “cmd.exe”已退出,代码为 1
错误原因:编译参数错误,可以查看 D:\d\S411R\Slicer-build\CMakeFiles下的CMakeError.log 和 CMakeOutput.log
解决方法:一堆看不懂的参数,我暂时没有找到可以修改编译参数就能解决的方案,在此卡了2天的情况下 ,无奈重装了系统和VS,之后文件就不在了。可能只是我个人系统的原因。
8、编译全部成功之后,会在 D:\d\S411D\Slicer-build 目录下生成一个 Slicer.exe 的可执行文件,双击即可打开3D-slicer 程序。致此编译部分就完成了。
接下来是调试debug阶段了:
打开cmd定位到 D:\d\S411D\Slicer-build 目录下后,执行 Slicer.exe --VisualStudioProject
会自动打开工程。设置SlicerApp为启动项目,点击运行,成功之后就会开始运行 3D-slicer程序了。
让我们看看它是什么样子吧!
启动成功