ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

3D Slicer Debug or Dev-170918

2021-01-05 14:33:55  阅读:203  来源: 互联网

标签:set Slicer Extension Module module Dev EXTENSION Debug 170918


1.the relationship between module & extension?

Slicer的plus-in机制不必多谈。下面仅初步谈论Module和Extension的关系,并就创建和调试过程中的一些细节问题进行总结。
  • Extension是实现一个功能的实体,可以包括若干的module
  • 每一个module都是实现某种特定功能的单位
总而言之,一个Extension包括很多module,每个module只实现整体功能的某部分细节。这样有一个好处,开发人员可以一步一步添加自己的功能模块,且各部分功能模块互相独立。这使得整个项目具备了独立性、并发性。

2.如何创建Extension及module?

仍然遵循之前的规则:
  • 利用ExtensionWizard
  • 在Extension基础之上添加module
  • 仅研究Loadable Module(可加载模块)
2.1 利用Extension Tools创建Extension名和Extension目录存放的位置         2.2 利用Extension Edit向Extension中添加Module            2.3 可以通过select Extension查看其中的内容 2.4 通过Extension顶层的CMakeLists.txt文件体会管理各个module
 1 cmake_minimum_required(VERSION 3.5)
 2 project(IGSdev)
 3 #-----------------------------------------------------------------------------
 4 # Extension meta-information
 5 set(EXTENSION_HOMEPAGE "http://slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/IGSdev 
 6 ")
 7 set(EXTENSION_CATEGORY "IGSdevTest")
 8 set(EXTENSION_CONTRIBUTORS "John Doe (AnyWare Corp.)")
 9 set(EXTENSION_DESCRIPTION "This is an example of a simple extension")
10 set(EXTENSION_ICONURL "http://www.example.com/Slicer/Extensions/IGSdev.png 
11 ")
12 set(EXTENSION_SCREENSHOTURLS "http://www.example.com/Slicer/Extensions/IGSdev/Screenshots/1.png 
13 ")
14 set(EXTENSION_DEPENDS "NA") # Specified as a space separated string, a list or 'NA' if any
15 #-----------------------------------------------------------------------------
16 # Extension dependencies
17 find_package(Slicer REQUIRED)
18 include(${Slicer_USE_FILE})
19 #-----------------------------------------------------------------------------
20 # Extension modules
21 add_subdirectory(IGSReader)
22 add_subdirectory(IGSWritter)
23 ## NEXT_MODULE
24 #-----------------------------------------------------------------------------
25 include(${Slicer_EXTENSION_GENERATE_CONFIG})
26 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~~

标签:set,Slicer,Extension,Module,module,Dev,EXTENSION,Debug,170918
来源: https://www.cnblogs.com/ybqjymy/p/14235635.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有