3D Slicer Module-ExtensionWizard & Build & Install

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:Slicer4DSlicer-buildModuleTestmyLoadable
通用编译步骤:
  • 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/ExtensionWizard
2.BuildExtension:https://www.slicer.org/wiki/Documentation/Nightly/Developers/FAQ#How_to_build_an_extension_.3F
3.InstallExtension:https://www.slicer.org/wiki/Documentation/Nightly/Developers/ExtensionWizard
原文地址:https://www.cnblogs.com/ybqjymy/p/14235572.html