This page looks best with JavaScript enabled

MITK安装教程 21.09.05

 ·  ☕ 9 min read

没有什么是重装一次电脑解决不了问题的

之前在B站上传过一次视频,但是太早,了,很多东西都忘记了。正好机器重装了一下系统,详细记录一下这次的MITK安装过程。(

VS2019安装

下载Visual Studio Installer安装包

https://visualstudio.microsoft.com/zh-hans/downloads/

Visual Studio 现在统一由安装包进行管理,下载之后点击之后,可以选择要安装的内容:

1.jpg

社区版足够满足日常需求。专业和企业版的功能更偏向团队合作以及一些专业开发。

Visual Studio 安装

  1. 选择使用C++的桌面开发,安装C++基本环境

    2.jpg

    在选择使用C++的桌面开发之后,右边框安装的详细信息中便会显示具体的安装内容

  2. 在单个组件中,勾选"C++/CLI支持"

    3.jpg

    勾选之后可能增加的不光是"C++/CLI支持"这一个组件,可能包含了上游组件,比如图中的".NET Framework XXX",不要去掉勾选,留着就行。

  3. 选择安装位置

    最好保持默认的C:系统盘的位置不要改变。
    4.jpg

    5.jpg

    因为我的主力语言现在不是C,C:在固态上,容量小,所以尽量把不经常用的东西搞到F:机械盘上。

    但是这个在后面就遇到了Windows Kits安装在F:/下,而不是指定的F:/install/下的问题。

    所以,后面无奈又卸载了Windows SDK,重新下载安装了SDK进行安装:

    8.jpg

    9.jpg

    10.jpg

    12.jpg

    注意,正常步骤中,SDK安装的选项中不包含 “Debugging Tools for Windows”,所以需要下面的第三步进行更改配置,添加这一必需选项

    15.jpg

    16.jpg

Windows SDK配置

如果不是为了安装MITK,仅为了安装VS2019可以不用设置Windows SDK
上回书说道,我因为更改了安装位置,所以导致Windows Kits安装位置不对,所以卸载重新安装了一下,在安装过程中配置好了,这里就不需要再添加了。所以这里简单演示一下配置流程,重要是安装上Debugging Tools for Windows.

  1. 控制面板中找到Windows Software Development kit

    17.jpg

  2. 点中SDK右键选择更改

  3. 选择更改

    18.jpg

  4. 勾选"Debugging Tools for Windows"后点击 “Change”

    19.jpg

VS2019 测试

  1. 打开VS2019后,点击创建新项目:

    20.jpg

  2. 选择"空项目",下一步

    21.jpg

  3. 配置新项目,选择项目位置,下一步

    22.jpg

  4. “源文件"右键,选择添加→新建项

    23.jpg

    24.jpg

  5. 经典Hello一下world

    25.jpg

CMake安装

跟着操作一步一步来就好

1.png
2.png
3.png
4.png
5.png
6.png
7.png

QT安装

离线安装和在线安装

  1. 可以采用下载离线安装包的方式,方便快捷一些。但是在5.15版本之后,QT不再提供离线安装,所以最新版本的只更新到了5.14版本

    https://download.qt.io/archive/qt/

    1.png
    2.png
    3.png

  2. 使用在线安装包,可以使用清华镜像站来下载在线安装包

    https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/

    5.png

    这里使用的是这种方式


在线安装步骤

注意,这里在安装MITK过程中走了弯路,因为MITK目前只支持到QT5.12.9,而我之前安装成了QT6
并且,因为QT5.15才支持MSVC2019,所以这里最终选择的QT版本是QT5.15

  1. 首先需要提供一个QT账户,这里注册一下就好

6.png

  1. 个人用户使用

7.png

  1. 下一步

8.png
9.png

  1. 选择安装路径,并关联主要格式

10.png

  1. 选择安装包

这里是QT6版本的安装,但是不适合MITK
11.png

这里是QT5.15版本的安装,配合MITK
36.png


37.png
下面中默认选择了CMake和Ninjia,这里因为之前自己安装了CMake,所以就不需要了,取消勾选了这两项

  1. 下一步

13.png
14.png
15.png

  1. QT安装完成

18.png

  1. 配置系统环境变量

40.png

VS2019+QT

  1. 建一个新的VS2019空项目,找到 “扩展” → “管理扩展”

19.png

  1. 在联机中搜索QT,找到官方扩展包“QT Visual Studio Tools”,选择下载

20.png

  1. 下载完毕后,关闭VS2019所有窗口后,扩展自动开始安装

21.png

22.png
23.png
24.png
25.png

  1. 安装完成后,需要对QT扩展进行设置。打开一个VS2019空项目。“扩展” → “Qt VS Tools” → “Options”

26.png

“Qt” → “Versions” → 点击加号增加一个空的Qt版本 → 点击Path一栏,找到目标QT版本中的bin/qmake.exe选中,Version自动填充

38.png
39.png

测试

  1. 创建新项目中选择 “Qt Widgets Applications”

28.png

  1. 配置项目名称和位置

29.png

  1. 下一步

30.png

  1. 这里只是为了测试,就仅选择了DEBUG模式
    31.png

  2. 下一步
    32.png

  3. 直接运行即可,可以弹出一个程序框,安装成功

35.png

MITK安装

下载MITK源码

在MITK的Github仓库中下载MITK源码,这里选择的使用git进行下载,也可以直接在网站中选择下载.zip压缩包

36.png
38.png

下载(解压)后的MITK文件夹示意图

39.png

CMake构建MITK项目

  1. MITK使用的是CMake的超级构建技术,所以打开CMake:

    • “Where is the source code:” 选择MITK源码所在的文件夹。(即上图中所示解压后的MITK文件夹)

    • “Where to build the binaries:” 选择将要构建MITK源码的文件夹。(这个文件夹可以是还没有新建的,之后会让新建)

40.png

  1. 选择好源码所在的路径和构建的目录之后,点击"Configure"进行第一次设置

41.png

  1. 因为之前选择的"Where to build the binaries:“文件夹还没有被新建出来,所以这里提示是否新建,肯定新建

42.png

  1. 这里选择生成器,因为我们之前是安装的VS2019,所以选择2019的这个

43.png

  1. 平台选择x64平台

44.png


第一次Configure后

可以看到提示报错了,报错信息是无法下载patch.exe,以前没遇到这个错,所以先不管他,继续下面的操作:

  1. 勾选上面的Grouped和Advanced,将CMake条目按组显示并显示高级的设置选项

45.png

  1. 在MITK目录下,勾选MITK_BUILD_ALL_PLUGINSMITK_BUILD_EXAMPLES。表示安装MITK中所有的插件和案例,建议勾选,没有需求也可以不用勾选。

46.png
47.png

  1. 在MITK目录下,勾选MITK_USE_Python3,表示构建MITK中相关的Python3插件,其中提供了MITK官方的Python调用方法,如果没有Python相关需求的可以不用勾选。

48.png

  1. 在CMAKE目录下,将CMAKE_INSTALL_PREFIX设置为相关路径,如果不使用编译包进行安装的话,可以省略这一步,其实就是为C盘节省一些空间

49.png

  1. 再次点击 “Configure”

第贰次Configure后

50.png

没有报错了,但是因为之前的勾选了一些新项目,所以还有一些红色背景的条目,所以再次点击Configure进行设置


第③次Configure后

51.png

没有报错,并且没有红色背景的待选项,所以可以点击Generate进行项目的生成

52.png

项目生成后,可以直接点击Open Project打开项目,其实就是打开了构建项目中的MITK-superbuild.sln

20>F:\install\MITK\MITK\Modules\Core\src\DataManagement\mitkSlicedGeometry3D.cpp(1,1): error C2220: 以下警告被视为错误 [F:\install\MITK\MITK-build\MITK-build\Modules\Core\MitkCore.vcxproj]
20>F:\install\MITK\MITK\Modules\Core\src\DataManagement\mitkSlicedGeometry3D.cpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 [F:\install\MITK\MITK-build\MITK-build\Modules\Core\MitkCore.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\dcmtk/dcmiod/modsopcommon.h(1,1): error C2220: 以下警告被视为错误 (编译源文件 F:\install\MITK\MITK\Modules\Multilabel\autoload\DICOMSegIO\mitkDICOMSegmentationIO.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\Multilabel\autoload\DICOMSegIO\MitkDICOMSegIO.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\dcmtk/dcmiod/modsopcommon.h(1,1): error C2220: 以下警告被视为错误 (编译源文件 F:\install\MITK\MITK\Modules\Multilabel\autoload\DICOMSegIO\mitkDICOMQIIOActivator.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\Multilabel\autoload\DICOMSegIO\MitkDICOMSegIO.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\dcmtk/dcmiod/modsopcommon.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 (编译源文件 F:\install\MITK\MITK\Modules\Multilabel\autoload\DICOMSegIO\mitkDICOMSegmentationIO.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\Multilabel\autoload\DICOMSegIO\MitkDICOMSegIO.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\dcmtk/dcmiod/modsopcommon.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 (编译源文件 F:\install\MITK\MITK\Modules\Multilabel\autoload\DICOMSegIO\mitkDICOMQIIOActivator.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\Multilabel\autoload\DICOMSegIO\MitkDICOMSegIO.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\dcmtk/dcmseg/segment.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 (编译源文件 F:\install\MITK\MITK\Modules\Multilabel\autoload\DICOMSegIO\mitkDICOMSegmentationIO.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\Multilabel\autoload\DICOMSegIO\MitkDICOMSegIO.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\boost/spirit/home/support/char_encoding/iso8859_1.hpp(1,1): error C2220: 以下警告被视为错误 (编译源文件 F:\install\MITK\MITK\Modules\ModelFit\src\Common\mitkFormulaParser.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\ModelFit\MitkModelFit.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\boost/spirit/home/support/char_encoding/iso8859_1.hpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 (编译源文件 F:\install\MITK\MITK\Modules\ModelFit\src\Common\mitkFormulaParser.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\ModelFit\MitkModelFit.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\dcmtk/dcmseg/segment.h(1,1): error C2220: 以下警告被视为错误 (编译源文件 F:\install\MITK\MITK\Modules\DICOMPM\autoload\DICOMPMIO\mitkDICOMPMIO.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\DICOMPM\autoload\DICOMPMIO\MitkDICOMPMIO.vcxproj]
20>F:\install\MITK\MITK-build\ep\include\dcmtk/dcmseg/segment.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 (编译源文件 F:\install\MITK\MITK\Modules\DICOMPM\autoload\DICOMPMIO\mitkDICOMPMIO.cpp) [F:\install\MITK\MITK-build\MITK-build\Modules\DICOMPM\autoload\DICOMPMIO\MitkDICOMPMIO.vcxproj]
20>F:\install\MITK\MITK\Modules\Core\test\mitkAffineTransformBaseTest.cpp(1,1): error C2220: 以下警告被视为错误 [F:\install\MITK\MITK-build\MITK-build\Modules\Core\test\MitkCoreTestDriver.vcxproj]
20>F:\install\MITK\MITK\Modules\Core\test\mitkAffineTransformBaseTest.cpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 [F:\install\MITK\MITK-build\MITK-build\Modules\Core\test\MitkCoreTestDriver.vcxproj]

编译MITK项目

这里等待的时间会非常漫长,而且会报很多错

  1. 打开项目后,直接Ctrl+F5进行编译。(这期间可以通过VS2019上面的搜索,搜索“错误”,打开“错误列表”)

53.png

  1. 第一次编译出错

54.png

在错误列表中,“警告”不用管,只管“错误”就行(MITK本身的警告级别很高,其实有一些错误可以在CMake中降低警告等级就不会报错了,但是这里还是没有手动调整CMake的警告等级)

55.png

可以看到,这次编译时因为一些包没有下载好导致的,所以切换一下网络,再次进行Ctrl+F5进行编译

  1. 第二次编译出错

在错误列表中可以看到,“以下警告视为错误”,但是我们不知道是什么警告,所以双击这个错误,然后切换到输出,就可以看到在编译过程中的警告提示

57.png

这个警告是经常遇到的一个警告:该文件包含不能在当前代码页表示的字符

其实就是编译过程中,这个文件的字符集不符合编译要求,所以只要把这个文件改一下编码方式就行,我一般改成的是GBK。

58.png

在VS2019中这个文件的标签中,点击右键,可以打开这个文件所在的位置,然后我这里是通过VSCode进行更换字符集的

59.png
60.png
61.png

更改好之后再次进行Ctrl+F5进行编译

  1. 第三-五次次编译出错

这次非常幸运没有出现其他的报错,大部分报错都是之前的字符集不符合要求,所以按照之前的步骤更改了字符集就可以

63.png
69.png
73.png

  1. 编译成功

当出现这个提示的时候,就说明编译成功了

76.png

因为这里的编译项目是左边栏中的“ALL_BUILD”,他只是负责构建项目,并没有进行打开,所以会提示无法启动程序

77.png

在 XXX/MITK-build/MITK-build/bin 中,找到 startMitkWorkBench_debug.bat,双击打开,可以打开编译好之后的MITK

78.png

通过Window打开Show View,可以看到比.exe多得多的插件

79.png

  1. Release版本

之前默认编译的是DEBUG,是方便开发的版本,之后的如果要在此基础上进行开发,那就需要Release进行最后的封装,所以这里也顺便编译了一下Release版本

80.png

就是将之前的DEBUG x64改为了Release x64,其中的报错和之前一样,这里就不重复了


其他可能遇到的错误

MSB806 自定义生成已退出,代码3

87.png

这个是看不出来任何问题的,双击这一条目,会在输出中看到具体的问题

Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354

88.png

所以这里面其实显示的问题是

patching file Modules/Video/BridgeOpenCV/include/itkOpenCVVideoIO.h
Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354

所以在网上查找发现问题:

https://blog.csdn.net/Victor_Ink/article/details/106925744

https://sourceforge.net/p/mitk/mailman/mitk-users/thread/ec274fa7935548f5a13edb7e74b98976%40dkfzex02n2.ad.dkfz-heidelberg.de/

因为文件中的换行字符在Linux和Windows表现不同导致。(在git上下载的时候的问题)

由于依赖项的patch、diff文件中,存在行尾换行字符不一致,所以导致了Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354错误的出现。

所以解决办法,

This can occur when using git. To solve it permanently, configure git with

1
git config –global core.autocrlf true

或者:

As a quick fix you can run

1
find . –name "*" –exec unix2dos {} \; (from git bash)

within E:/MITK/CMakeExternals/

找到了所有的LR结尾的文件,然后把他们改成CRLF就行

mitkIOUtil.cpp 警告视为错误 “nodiscard”

Share on

MiaoMiaoYang
WRITTEN BY
MiaoMiaoYang