3DSlicer29:Debug or Dev-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中添加Module2.3 可以通过select Extension查看其中的内容2.4 通过Extension顶层的CMakeLists.txt文件体会管理各个modulecmake_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相关推荐
- 不在以下合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html
出现"不在以下合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html"这种 ...
- 微信小程序报错 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 ...
- https://api.douban.com 不在以下 request 合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/net
微信小程序报错: 解决方案: 一.点开工具,并选择项目详情 . 二.勾中选项即可
- 关于部署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 ...
- 小程序地图的使用笔记
这两天在看小程序的地图,写写笔记记录一下 小程序官方文档提供的方法 https://mp.weixin.qq.com/debug/wxadoc/dev/api/location.html 腾讯地图提供 ...
- linux的根文件系统中的proc文件夹详解
什么是proc文件系统 |linux /proc目录介绍|proc中文手册 proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接 ...
- atomic原子类实现机制_JUC学习笔记--Atomic原子类
Atomic 原子操作类包 Atomic包 主要是在多线程环境下,无锁的进行原子操作.核心操作是基于UnSafe类实现的CAS方法 CAS CAS: compareAndSwap :传入两个值:期望值 ...
- 微信小程序游戏开发文档以及开发工具地址
微信小程序开发交流qq群 581478349 承接微信小程序开发.扫码加微信. 正文: 微信官方于 2017 - 12 - 28 日 开发微信小程序 开发小游戏 , 微信小程序小游戏开发官方 ...
- 微信小程序swiper组件宽高自适应方法
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 正文: 我把 swiper 的 width 设定成了屏幕的95%宽度, 如果想宽度也自适应的话请改成 wid ...
最新文章
- 学习C++就这么简单 ——《写给大家看的C++书》
- opencv python3 找图片色块_Python 图像处理 OpenCV (3):图像属性、图像感兴趣 ROI 区域及通道处理...
- SAP CRM Interactive Report(交互式报表)里和服务订单相关的一些字段
- linux c之snprintf()和sprintf()区别
- Docker快速入门实践-纯干货文章
- 利用html 5 websocket做个山寨版web聊天室(手写C#服务器)
- xmind思维导图(下载、使用——超级详细)
- Python 转 exe
- 【网站】作为技术人可能要用到的IT技术网址清单,欢迎评论补充
- Markdown字体,字号,颜色和背景色设置
- 数据治理之数据质量管控流程(参考)
- Jetson TK1安装记录
- HOOK SSDT 实现内核级的进程保护
- linux lseek 指定 文件大小,linux下通过lseek()实现文件大小设置
- linux 系统业务迁移,记录一次linux系统迁移过程
- macbook视频格式转换_一键视频格式转换器for Mac-一键视频格式转换器Mac版下载 V6.3.37-PC6苹果网...
- iOS 代理(Delegate)
- Linux创建磁盘并分区命令
- css3之 谜灯卡片_CSS3 迷幻光影文本特效
- 【动态规划】01背包问题-练习题-采药
热门文章
- 无法初始化插件目录(can't initialize plug-ins directory)
- 字体中字号,磅值和mm之间的转换
- 中国平民百姓与富翁的五大差距
- 至毕业设计组同学的一封公开信
- 全新ARM base PocketPC 2003 Emulator Beta 已登場。
- hdu-4704 sum(费马小定理)
- hdu-Calculation 2(欧拉函数)
- 如何理解神经网络优化中Momentem能够缓解hessian矩阵病态的问题
- cogs 1456. [UVa 10881,Piotr's Ants]蚂蚁
- 计算机网络(网络层,运输层和应用层的一些tips)