医学图像处理软件MITK-2021.10源码编译成功教程

医学图像处理软件MITK-2021.10源码编译成功教程,第1张

搞了好几天,终于搞定了Windows平台的源码编译

1、电脑环境准备

Win10 x64

VS2019 x64

Qt 5.12.11

CMake 3.21

OPenSSL x64

https://slproweb.com/products/Win32OpenSSL.html

2、源码准备

https://github.com/MITK/MITK/releases/

MITK v2021.10

3、编译过程

(1)务必先登录v p n或者爬梯子(比如英超兰帕德),否则源码编译一定会失败。

(2)务必修改路径T:\vtk\MITK-2021.10\CMakeExternals\*.patch文件的格式。

把文件夹里面的6个patch文件使用EditPlus编辑软件打开,统一修改换行方式为Windows PC方式,不能是Unix方式。

 步骤(1)和(2)至关重要,决定了源码是否能否编译成功。

如果忽视了,那么后续编译源码就会报错:

(3)cmake准备,x64

建议源码路径和build路径不要过长且不要包含中文,否则可能出错。

 Configure,建议把BUILD_TESTING去掉,节省时间

 然后Generate,Open Project即可。

cmake参数除了BUILD_TESTING已去掉(可有可无),其他都是使用默认值,不需要修改。

(4)编译MITK-superbuild工程

其实cmake配置完毕,打开的工程默认就是MITK-superbuild工程,路径在:

T:\vtk\MITK-2021.10\build\MITK-superbuild.sln

一键编译即可。

期间会自动下载第三方依赖的源码。

只要梯子够稳定,整个源码下载过程很友好。

如果出现不友好,一定是网络卡了或中断了,那只能重新构建工程,重新下载源码了,直到成功。

最后会报错,先不管它,我们留到后面一步来解决: 

(5)编译MITK工程

这次需要手动打开工程,路径在:

T:\vtk\MITK-2021.10\build\MITK-build\MITK.sln

 一键编译即可。

过程会C2220报错:

 解决办法:

打开子项目MitkCore,属性,常规,将警告视为错误修改为--否!

其他几个子项目也是采取同样方式解决:
MitkDICOMPMIO

MitkDICOMSegIO

MitkModelFit

(6)大功告成!!

执行程序在T:\vtk\MITK-2021.10\build\MITK-build\bin\Debug\MitkWorkbench.exe

4、程序启动入口
\MITK-2021.10\Applications\Workbench\MitkWorkbench.cpp
int main(int argc, char **argv)
{
   ......
   // Run the workbench.
   return app.run();
}

\MITK-2021.10\Modules\AppUtil\src\mitkBaseApplication.cpp  
int BaseApplication::run()//主程序入口
{
   this->init(d->m_Argc, d->m_Argv);
   return Application::run();//会回调执行void BaseApplication::initialize()
}

\MITK-2021.10\build\ep\src\Poco\Util\src\Application.cpp
int Application::run()
{
	int rc = EXIT_CONFIG;
	initialize(*this);

	try
	{
		rc = EXIT_SOFTWARE;
		rc = main(_unprocessedArgs);
	}
	catch (Poco::Exception& exc)
	{
		logger().log(exc);
	}
	catch (std::exception& exc)
	{
		logger().error(exc.what());
	}
	catch (...)
	{
		logger().fatal("system exception");
	}

	uninitialize();
	return rc;
}

//真正的初始化函数:
void BaseApplication::initialize(Poco::Util::Application &self)//回调之后的主程序入口
{
    ......
}

int BaseApplication::main(const std::vector &args)
{
    ......
}

void BaseApplication::uninitialize()
{
    ......
}

5、程序调用堆栈

主窗口界面在\MITK-2021.10\Plugins\org.blueberry.ui.qt\src\internal\berryWorkbenchWindow.cpp

 \MITK-2021.10\Plugins\org.blueberry.ui.qt\src\internal\berryWorkbench.cpp

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存