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
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相关推荐

  1. 不在以下合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html

    出现"不在以下合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html"这种 ...

  2. 微信小程序报错 http://localhost:8084 不在以下 request 合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/a

    http://localhost:8084 不在以下 request 合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/netwo ...

  3. https://api.douban.com 不在以下 request 合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/net

    微信小程序报错: 解决方案: 一.点开工具,并选择项目详情 . 二.勾中选项即可

  4. 关于部署osd过程中:Device is in use by a device-mapper mapping问题解决

    ceph环境:12.2.1 使用古老的ceph-disk工具部署osd,仅仅prepare过程中就出现如上所示问题 Device is in use by a device-mapper mappin ...

  5. 小程序地图的使用笔记

    这两天在看小程序的地图,写写笔记记录一下 小程序官方文档提供的方法 https://mp.weixin.qq.com/debug/wxadoc/dev/api/location.html 腾讯地图提供 ...

  6. linux的根文件系统中的proc文件夹详解

    什么是proc文件系统    |linux /proc目录介绍|proc中文手册 proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接 ...

  7. atomic原子类实现机制_JUC学习笔记--Atomic原子类

    Atomic 原子操作类包 Atomic包 主要是在多线程环境下,无锁的进行原子操作.核心操作是基于UnSafe类实现的CAS方法 CAS CAS: compareAndSwap :传入两个值:期望值 ...

  8. 微信小程序游戏开发文档以及开发工具地址

    微信小程序开发交流qq群   581478349    承接微信小程序开发.扫码加微信. 正文: 微信官方于 2017 - 12 - 28 日 开发微信小程序 开发小游戏 , 微信小程序小游戏开发官方 ...

  9. 微信小程序swiper组件宽高自适应方法

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 我把 swiper 的 width 设定成了屏幕的95%宽度, 如果想宽度也自适应的话请改成  wid ...

最新文章

  1. 学习C++就这么简单 ——《写给大家看的C++书》
  2. opencv python3 找图片色块_Python 图像处理 OpenCV (3):图像属性、图像感兴趣 ROI 区域及通道处理...
  3. SAP CRM Interactive Report(交互式报表)里和服务订单相关的一些字段
  4. linux c之snprintf()和sprintf()区别
  5. Docker快速入门实践-纯干货文章
  6. 利用html 5 websocket做个山寨版web聊天室(手写C#服务器)
  7. xmind思维导图(下载、使用——超级详细)
  8. Python 转 exe
  9. 【网站】作为技术人可能要用到的IT技术网址清单,欢迎评论补充
  10. Markdown字体,字号,颜色和背景色设置
  11. 数据治理之数据质量管控流程(参考)
  12. Jetson TK1安装记录
  13. HOOK SSDT 实现内核级的进程保护
  14. linux lseek 指定 文件大小,linux下通过lseek()实现文件大小设置
  15. linux 系统业务迁移,记录一次linux系统迁移过程
  16. macbook视频格式转换_一键视频格式转换器for Mac-一键视频格式转换器Mac版下载 V6.3.37-PC6苹果网...
  17. iOS 代理(Delegate)
  18. Linux创建磁盘并分区命令
  19. css3之 谜灯卡片_CSS3 迷幻光影文本特效
  20. 【动态规划】01背包问题-练习题-采药

热门文章

  1. 无法初始化插件目录(can't initialize plug-ins directory)
  2. 字体中字号,磅值和mm之间的转换
  3. 中国平民百姓与富翁的五大差距
  4. 至毕业设计组同学的一封公开信
  5. 全新ARM base PocketPC 2003 Emulator Beta 已登場。
  6. hdu-4704 sum(费马小定理)
  7. hdu-Calculation 2(欧拉函数)
  8. 如何理解神经网络优化中Momentem能够缓解hessian矩阵病态的问题
  9. cogs 1456. [UVa 10881,Piotr's Ants]蚂蚁
  10. 计算机网络(网络层,运输层和应用层的一些tips)