3D Slicer 源码编译记录

此次编译的为Slicer-5.2.2版本

史上最全slicer编译踩坑记录。

一、源码下载

git地址:GitHub - Slicer/Slicer at v5.2.2

重要

1、使用clone下来,通过压缩包下载后面需要解决git的问题

git clone -b v5.2.2 --depth=1 git://github.com/Slicer/Slicer

2、构建前将本机python的debug环境先卸载。

3、qt版本要用对。

二、CMake构建

                  

        将BUILD_TESTING,Slicer_USE_QtTesting,是否编译测试示例,本文取消选则

 1、遇到的问题

  1. Could NOT find Patch (missing: Patch_EXECUTABLE)

         原因是Patch_EXECUTABLE 路径找不到,因为后面编译时,会用到git 去下载很库文件,所以搜索 patch.exe在本机的位置,手动填写路径即可。

      2. Qt5_DIR-NOTFOUND

        因为没配置环境变量,所以手动添加即可。(切记不要因为本机有其他版本就去直接使用,不然会得不偿失)使用要求的qt版本。

      3. CMake Error at CMake/SlicerCheckCMakeHTTPS.cmake:33 (message):
error: "Timeout was reached"

        打开Slicer\CMake\SlicerCheckCMakeHTTPS.cmake文件,将url的地址改为国内可以访问的地址。如www.baidu.com

 三、vs编译

 1、遇到的问题

         1. fatal error C1189: #error: Unsupported platform (invalid pointer size)

dcmtk编译报错:原因为cmake构建x64或者win32平台时未声明 SIZEOF_VOID_P 的问题,我是cmake3.25.0报的错,所以升级到了cmake3.25.2后重新构建完成。

        2. X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS: 未声明的标识符

         看意思是openssl报的错,所以在cmake时将Slicer_USE_PYTHONQT_WITH_OPENSSL勾掉后重新构建。(我最开始用的qt版本不对,后续换成正确的版本且安装时增加openssl的安装后未发现此错误)

        3. Failed to clone repository:

         挂了全局代理也会出现这个问题,所以需要我们手动拉下来。打开视图->终端:在powershell中git clone后重新编译即可。

        此方法也会有实效的情况,就需要手动将git下来的文件复制到itk、vtk等等这些模块的Remote文件夹中,文件夹命名根据远程模块对应的 .remote.cmake文件中的名称来命名然后重新编译即可。

        4.PythonQt报错

        使用cmake工具打开 python-build 文件夹重新构建后再打开slicer工程编译。

         5.ctk报错

        还是说pythonqt的错,然后我们去找具体的报错内容发现是找不到PythonQt.dll

         找到D:\Slicer-5.2.2\BUILD64\CTK-build\PythonQt-build的工程目录打开PythonQt的工程,手动编译,成功后再编译slicer工程。

                            

        6. python-setuptools报错

         通过打开报错文件确定是python 的pip安装第三方库时超时导致的问题,所以我们要解决目前国内目前pip安装国外源超时的问题

         因为修改slicer的编译代码替换源很麻烦,所以这里采用永久修改源的方法。

                1. 在windows文件管理器中,输入 %APPDATA%,cmd里面输入即可。

                2. 会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件

                3.在新建的pip.ini文件中输入以下内容

[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

        7. swigwin下载失败

         挂上代理下载swigwin-4.0.2.zip后放到D:\Slicer-5.2.2\BUILD64\Swig-prefix\src文件夹下重新编译。

        8. 无法打开输入文件"optimized.lib"

         使用cmake打开D:/Slicer-5.2.2/BUILD64/SimpleITK-build/SimpleITK-build/文件夹

                                 

     将系统的红圈部分删除,不然就会 Found PythonLibs: optimized;....debug等系统python库依赖的第三方库。然后重新configur、generate后再编译。

        9. get_filename_component unknown component optimized

         原因还是因为我们本地有python环境造成的,检查编译过的CTK ITK等,是否有python_debug_library有引入本地python包将红圈部分删除后再重新编译。

        还有一种简单的方法就是在报错的cmake源码

get_filename_component(PYTHON_LIB_BASE ${PYTHON_LIBRARY} NAME_WE)

改写为

set(PYTHON_LIBRARY "D:/Slicer-5.2.2/BUILD64/python-install/libs/python39.lib")
get_filename_component(PYTHON_LIB_BASE ${PYTHON_LIBRARY} NAME_WE)

        10. Variable Slicer_WC_LAST_CHANGED_DATE is expected to be defined.

 原因为slicer工程不是git clone下来的所以没有.git文件夹,导致没有调用GIT_WC_INFO宏导致的

有两个方法一个方法是git去拉,不要拉master分支,拉取固定版本

git clone -b v5.2.2 --depth=1 git://github.com/Slicer/Slicer

,网速不快的话很麻烦,第二种方法是git clone个.git文件夹就停,然后将.git文件夹拷贝到Slicer-5.2.2工程下,然后改写D:\Slicer-5.2.2\CMake\SlicerMacroExtractRepositoryInfo.cmake文件,增加

    set(${wc_info_prefix}_WC_TYPE git)
    GIT_WC_INFO(${MY_SOURCE_DIR} ${wc_info_prefix})

四:调试

        进入到子文件夹Slicer-build中,如果直接用VS打开Slicer.sln,设置SlicerApp为启动项。

                        

  

如果遇到 缺少QT5widgets.dll,缺少CTKwidget.dll等问题,通过命令行启动,在Slicer-build目录输入下面命令启动即可。

.\Slicer.exe --VisualStudioProject

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混元太极马保国

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值