1.前言
Slicer模块典型包含几种不同类型的模块,如CMake文件、Source文件、资源文件。在大多数情况下,为了方便编译,文件名称和文件中文本字符串的名称需要保持一致。ExtensionWizard是一个简化创建流程的工具。
2.使用GUI进入Extension
开启Slicer,选择ExtensionWizard即可。创建Extension:ExtensionWizard利用Template机制创建Module和Extension。GUI会自动创建相关文件并产生代码。
- 点击“Create Extension”:
为我们的Extension/Module指定一个名字,和一个空的文件夹作为目标目录。OK
- 可选择地指定Extension/Module的细节描述:
- 点击“Add module to extension”
指定名字和模块的类型。首次开发情况下都会选用“scripted”作为模块类型,因为只有Python的scripted模块可以不经过Slicer自定义地Build,就可以创建并使用。OK。
- 勾选“Add selected module to search paths”
- 从Module列表中打开我们创建的模块
3.命令行中2的创建过程
从上面我们可以得出以下结论:
- 从源码中拷贝模板文件夹,并修改名称为ScriptTest,创建相应的CMakeList.txt文件和ScriptTest.png图标文件
- 从源码中拷贝Scripted类型的模板,并修改名字为ScriptTest,创建相应的CMakeList.txt文件、ScriptTest.py文件、Resource/Icon/ScriptTest.png文件、Testing/CMakeList.txt文件、Testing/Python/CMakeList.txt文件
再次区别三个模块的定位:
- cli:提供自定义命令行接口
- loadable:在Slicer中提供一个新的功能/C++
- scripted:在Slicer中提供一个新的功能/Python
4.Build Extension
如果我们的程序不是使用“Pure Python”编写的,若想使用这个模块,那么我们就必须要先学会编译它。Notice:若想Build Extension,我们必须已经在本机上编译过源码了。我的Extension源代码位于D:\Slicer4D\Slicer-build\ModuleTest\myLoadable通用编译步骤:
- CMake:
- 选择源代码文件和目标文件(例如:myLoadable-build)
- 在CMake中设置Slicer_DIR(例如:D:/Slicer4D/Slicer-build)
- configure & generate
- VisualStudio
- 打开myLoadable.sln,选择Debug(Debug or Release要根据Slicer-build的版本选取)
- Project->Build Solution
5.Install Extension
对于Slicer而言,并没有“Install”的说法,因为Slicer采用的Plug-in机制,所以我们可以理解为注册就好:
3DSlicer->Edit->Application Setting Dialog->Module->Add Additional Path:
- ~/code/MyExtension/build/lib/Slicer-<version>/qt-loadable-modules
- ~/code/MyExtension/build/lib/Slicer-<version>/qt-scripted-modules
- ~/code/MyExtension/MyPythonModule (因为Pure Python 无需编译可以直接使用)
6.参考文献
1.ExtensionWizard:https://www.slicer.org/wiki/Documentation/Nightly/Developers/ExtensionWizard2.BuildExtension:https://www.slicer.org/wiki/Documentation/Nightly/Developers/FAQ#How_to_build_an_extension_.3F3.InstallExtension:https://www.slicer.org/wiki/Documentation/Nightly/Developers/ExtensionWizard