3DSlicer29:Debug or Dev-170918
生活随笔
收集整理的这篇文章主要介绍了
3DSlicer29:Debug or Dev-170918
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1.the relationship between module & extension?
Slicer的plus-in机制不必多谈。下面仅初步谈论Module和Extension的关系,并就创建和调试过程中的一些细节问题进行总结。- Extension是实现一个功能的实体,可以包括若干的module
- 每一个module都是实现某种特定功能的单位
2.如何创建Extension及module?
仍然遵循之前的规则:- 利用ExtensionWizard
- 在Extension基础之上添加module
- 仅研究Loadable Module(可加载模块)
2.2 利用Extension Edit向Extension中添加Module
2.3 可以通过select Extension查看其中的内容
2.4 通过Extension顶层的CMakeLists.txt文件体会管理各个module cmake_minimum_required(VERSION 3.5) project(IGSdev) #----------------------------------------------------------------------------- # Extension meta-information set(EXTENSION_HOMEPAGE "http://slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/IGSdev ") set(EXTENSION_CATEGORY "IGSdevTest") set(EXTENSION_CONTRIBUTORS "John Doe (AnyWare Corp.)") set(EXTENSION_DESCRIPTION "This is an example of a simple extension") set(EXTENSION_ICONURL "http://www.example.com/Slicer/Extensions/IGSdev.png ") set(EXTENSION_SCREENSHOTURLS "http://www.example.com/Slicer/Extensions/IGSdev/Screenshots/1.png ") set(EXTENSION_DEPENDS "NA") # Specified as a space separated string, a list or 'NA' if any#----------------------------------------------------------------------------- # Extension dependencies find_package(Slicer REQUIRED) include(${Slicer_USE_FILE})#----------------------------------------------------------------------------- # Extension modules add_subdirectory(IGSReader) add_subdirectory(IGSWritter) ## NEXT_MODULE#----------------------------------------------------------------------------- include(${Slicer_EXTENSION_GENERATE_CONFIG}) include(${Slicer_EXTENSION_CPACK}) 我们可以知道两个事: 1.Extension依赖项(slicer,将独立拓展与主框架联系在一起)。 2.Extension管理模块就是通过简单的add_subdirectory实现的。
3.如何调试Extension及module?
生成*.sln仍然采用之前的方法:- CMake构建项目,生成解决方案*.sln。(后面我也会介绍到,这里的解决方案是指Extension整个功能,其内部包含独立的项目module)
- Slicer.exe --VisualStudio打开*.sln文件,生成解决方案。(顶层Extension+bin+CMakefile+Modules...+lib+Test+x64文件夹。其中,各个module都有自己独立的文件夹,lib是应用Plus-in机制的指定文件夹)
在解决方案中,大概可以分为两类qSlicer(name)Module(func)、vtkSlicer(name)Module(func): 3.1 qSlicer(name)Module(func)
初步看,qSlicer部分用于图形框架搭建。 3.2 vtkSlicer(name)Module(func)
初步看,vtkSlicer部分用于实现功能算法。三个项目实际上说的是一个事,就是Logic~~
总结
以上是生活随笔为你收集整理的3DSlicer29:Debug or Dev-170918的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 20岁MM和25岁MM的区别(非原创,分
- 下一篇: 谈谈软件工程设计的艺术