描述:
有些旧了,不过还是有很多值得学习的地方;
一、编译前的工作:
1.编译环境:
平台:windows 10
2、下载地址:
https://github.com/MITK/MITK/releases
我选择的是
https://github.com/MITK/MITK/archive/refs/tags/v2021.10.zip
3.需要先安装好以下软件:VS2017 ,Qt5.12.4 , CMake 3.10.3, Git
4.时间,大概 3个小时左右,和下载速度 和遇到的问题多少有关系;
注意:
QT安装时,可以不选source; 选中其它,以免后面,编译时,报错找不到;
二. cmake编译mitk-superbuild
1. 解压MITK源码后使用Cmake打开
建议源码路径和build路径不要过长且不要包含中文,否则可能出错。点击 configure时选择vs2017 win64,此处编译一般速度较快,若卡住不动,说明编译异常,此时需要重新使用Cmake打开,直至第一步configure完成。再generate即可。
注意:如遇到找不到Qt-Dir
选择类似
三.编译 mitk-superbuild.sln工程
1.使用管理员模式 运行VS
然后打开编译后的 mitk-superbuild.sln,右击 ALL_Build ,选择 生成;
会自动下载安装相应库及软件
2.如网络下载慢
使用vs2017打开mitk-superbuild.sln进行编译,编译时会通过网络下载依赖库压缩包文件,如果网速较慢可在编译前直接将多个压缩包文件拷贝至X:\XXXX\MITK_build\ep\src再进行编译(压缩包文件找其他同事拷贝),此时就不需要再通过网络下载。
注意:首次编译过程中将出现多处报错属于正常现象,可参考以下教程部分一一解决:
若网络不好,可能会提示下载mitk_data失败,而且不能像上面的方法一样先下载下来再放在某个特定的文件夹里,这时可以先忽略这个错误,成功生成mitk_build.sln之后,即可打开编译。如果mitk_data 下载不成功的话,也可以先暂时搁置,不影响后面mitk.sln的编译。
3.patch 文件 换行符号问题
报错 类似 Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354
是因为 类似 Engine-patch 文件换行符号问题;
在各个系统中,编辑文件生成的换行符,其实是不一样的:
Unix/Linux 系统中:每行结尾只有 "<换行>",即 "\n";
Windows/Dos 系统中:每行结尾是 "<回车><换行>",即 "\r\n";
Mac 系统中:每行结尾是 "<回车>",即 "\r"。
这个时候,如果我们使用的是跨平台的开源库,就很容易碰到这样的问题,因为保不齐某些构建、编译文件就是在Linux下编写的,而我们如果在Windows平台上构建编译,就会无法识别或者报错
解决方案:
可 下载 Notepad++ 显示换行符,视图 -> 显示符号 -> 显示行尾符,如果是英文版的 Notepad++,则应该是 View -> Show Symbol -> Show End of Line。Windows系统中,我们就可以在文档行尾看到CR、LF等标识。
如图:
打开源码 下文件夹,例: E:\source\MITK-2021.10\CMakeExternals
CMakeExternals 文件夹下 带 .patch 文件, 使用Notepad++ 编辑->文档格式转换->转为 Windows(CR LR) 保存;
也可使用 UltraEdit 有类似工具
转换后 :
4.文件格式问题
编译的过程中还会出现多处文件编码格式相关的报错,这时将错误信息中提到的文件改变一下编码格式即可,
例:
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
D:\MITK\build\MITK-build\Modules\DICOMTesting\DumpDICOMMitkImage.vcxproj”(默认目标)
(1 选取相关文件,点击:文件->高级保存选项->Unicode PageCode 1200
(2 如果文件菜单中没有高级保存选项,点击:工具->自定义->命令->添加命令->文件->高级保存选项
(3 或者可以按如下处理:
如下图,点击该项目属性,将 "警告视为错误" 这一项 改为"否"
5.注意输出编译日志
如在日志发现类似以下:
The following features have been disabled:
18> * MitkRigidRegistrationUI, (missing dependencies: Qt5|Widgets+OpenGL+Core)
18> * MitkOpenCVVideoSupport, (missing dependencies: OpenCV)
如果这两个模块你又需要,原因很明显是,CMakeLists.txt,少依赖(这个错是我编译早期一个版本发现的错误)
解决方案:
打开源码,找到相应 module ,例:E:\MITK-2016.11\Modules\RigidRegistrationUI
打开 CMakeLists.txt 文件
MITK_CREATE_MODULE(
SUBPROJECTS MITK-Registration
INCLUDE_DIRS RigidRegistrationMetrics RigidRegistrationOptimizer RigidRegistrationTransforms
DEPENDS MitkQtWidgets MitkRigidRegistration
PACKAGE_DEPENDS Qt5|Widgets+OpenGL+Core CTK|CTKWidgets
)
添加 PACKAGE_DEPENDS Qt5|Widgets+OpenGL+Core CTK|CTKWidgets
四.cmake编译MITK-Build
编译完成之后,再次打开Cmake,此时路径选择
“configure”一下这个工程,然后依次“generate->open Project->ALL_build”,也就是build MITK.sln (F:\mitkbuild\MITK-build)。
在生成之前,首先注意是debug还是release,要与上面编译的mitk-superbuild保持一致。
五.编译 MITK.sln工程
打开 build/MITK-build 目录中的 MITK.sln
右击 ALL_Build ,选择 生成;
注意:在生成之前,首先注意是debug还是release,要与上面编译的mitk-superbuild保持一致,然后直接开始编译,编译成功之后选择mitkWorkBench作为启动项,运行一下该工程,出现workBench 的UI界面证明MITK编译成功。
最后注意:
VS 运行环境,还需要安装 VisualC++AIOv2019.05.21-C++文档类资源
更新日期:2022.01. 9