3D Slicer源码编译教程

前言

3D Slicer是一个免费的开源软件(基于BSD授权条款),用于影像分析、影像视觉化以及影像导引放射治疗(Image Guided Radiotherapy,IGRT),可被用于Linux、MacOSX和windows等操作系统,它具有相当良好的可扩充性,可以透过嵌入模组的方式添加新的功能。

3D Slicer适用于查看全身各个组织的器官,相容于核磁共振造影(MRI)、电脑断层扫描(CT)、超音波(US)以及显微镜下的影像。 [3]

3D Slicer支援二维多平面重建,可以用 3D 的形式将器官以不同的角度进行切割来查看不同的切面,并可结合核磁共振造影(MRI)的数据,让医师可以对危险程度较高的手术进行更多的事前模拟。[4]

3D Slicer的功能包括:[5]

3D Slicer以BSD授权条款发布。虽然该许可证在学术及商业用途上没有任何限制,但是使用者有责任在遵守当地法规的情况下使用,而3D Slicer目前尚未获得美国FDA正式批准于临床上使用。

( 以上简介来源维基百科)

编译准备

本文所用编译工具及编译环境如下:

  1. Windows 10 21H2 x64,Windows SDK 19041
  2. Git 2.39.1
  3. CMake 3.25.2
  4. Qt 5.15.2(3D Slicer 5.2 版本所需 Qt 版本为 5.15)
  5. Visual Studio 2019

编译配置

1. 源码下载

Github 克隆 3D Slicer 源码,切换分支至 5.2,本文源码路径为 ”D:\Build\Slicer“,后文路径会以此为准。

(直接下载源码编译会在最后编译的时候报错,所以建议 Github 拉取源代码编译)

2. 源码 cmake 文件修改

记事本打开文件 “D:\Build\Slicer\CMake\SlicerCheckCMakeHTTPS.cmake",修改第14 行中的路径。

// 将路径 "https://raw.githubusercontent.com/Slicer/Slicer/main/CMakeLists.txt" 修改为可国内访问的我网站,本文以百度官网为例
function(slicer_check_cmake_https)
  set(url "https://www.baidu.com")
  set(dest "${CMAKE_CURRENT_BINARY_DIR}/slicer_check_cmake_https_output")

这是一个 check 网络的 cmale 文件,不修改会报错,在编译过程中会下载多个三方库。

3. 路径配置

新建编译文件夹,CMake-gui 中配置源码路径和编译路径

源码路径:D:/Build/Slicer

编译路径:D:/Build/Slicer/build_5.2

路径配置完成后,点击【Configure】,配置选项选择 VS2019 和 x64 平台

4. CMale 配置选项修改

其实这一步没什么好修改的,使用默认的基本上就可以了。本文根据个人喜好还是修改了一部分选项

  • Qt5_DIR:E:/Dev/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5

  • BUILD_TESTING,Slicer_USE_QtTesting,是否编译测试示例,本文取消选则,取消选择会加快编译速度

  • Slicer_VTK_SMP_IMPLEMENTATION_TYPE:VTK 中 SMP 的实现方式,本文选择 TBB,使用 TBB 会加快 VTK 中的一些计算,使用默认即可。
    有兴趣者可下载 oneapi-tbb 进行配置,

点击【Configure】继续配置,点击【Generate】生成 VS 解决方案。

VS 报错解决

使用 VS 2019 打开解决方案,解决方案配置 改为 ”Release x64“,生成【ALL_BUILD】,等待一段时间即可。

期间在下载多个库,下载失败会不停报错,甚至可能需要科学上网。

1. CTK 报错

每次【ALL_BUILD】生成完成后,继续生成【ALL_BUILD】,直至大约报错只有 2~3 个为止,报错信息如下:

CMake Error at CMakeLists.txt:861 (find_package):
  By not providing "FindCTK.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "CTK", but
  CMake did not find one.

  Could not find a package configuration file provided by "CTK" with any of
  the following names:

    CTKConfig.cmake
    ctk-config.cmake

在这里插入图片描述
CMake-gui 打开编译目录 ”D:/Build/Slicer/build_5.2/CTK-build“,新建 ”CTK_install“ 文件夹,【CMAKE_INSTALL_PREFIX】修改为 ”D:/Build/Slicer/build_5.2/CTK-install“,重新配置和生成解决方案,VS 打开解决方案,生成【ALL_BUILD】。

2. PythonQt 报错

在编译 CTK 时,PythonQt 报错,报错信息如下:

CMake Error at CMake/ctkMacroWrapPythonQt.cmake:194 (message):
CUSTOMBUILD : error : PythonQt package is required to build CTKCorePythonQt

在这里插入图片描述

CMake-gui 打开编译目录 ”D:/Build/Slicer/build_5.2/CTK-build/PythonQt-build“,无需修改,重新配置和生成解决方案,VS 打开解决方案,生成【ALL_BUILD】。编译完成后生成【INSTALL】安装 PythonQt。

3. 编译 CTK

再回到 CTK 解决方案中,生成【ALL_BUILD】,这时候应该就可以全部编译成功了,编译完成后生成【INSTALL】安装 CTK。

4. 编译 Slicer

再回到 Slicer 解决方案中,生成【ALL_BUILD】,等待编译完成即可,这时候应该就可以全部编译成功了。

Ps:

Slicer 解决方案中看不到源代码,Slicer 解决方案中的一个个项目是一个子解决方案,编译的时候下载多个第三方库,然后分别编译所需第三方库,生成多个子解决方案,多个子解决方案再最后组合成一个 Slicer 解决方案。

整体的 Slicer 解决方案中有一个子 Slicer 解决方案,路径为 “D:\Build\Slicer\build_5.2\Slicer-build\Slicer.sln”,打开这个子 Slicer 解决方案即可看到软件源代码,main 函数在项目【SlicerApp】中。

结语

以上就是所有的编译教程,整体编译不难,就是其中觉得其中有的地方有点坑人,就想着记录一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值