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/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

3DSlicer22:Module-ExtensionWizard Build Install相关推荐

  1. Centos 安装python 3.7 遇到 ModuleNotFoundError: No module named _ctypesmake [install] Error 1(亲测下面的红字内容)

    CentOS 7.3 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5. python -V     命令查看一下是否安装Python which py ...

  2. clean,compile,build,install,package区别

    clean: 执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件 compile:编译命令,只编译选定的目标,不管之前是否已经编译过,会在你的项目路径下 ...

  3. How to build openssl with fips module on Linux and Windows?

    Build Openssl With Fips Module On Windows 参考github上的文档 https://github.com/ColdDragon/windows-build-o ...

  4. IntelliJ IDEA 的 Build Project/Build Module/构建项目/构建模块

    文章目录 Build Module Rebuild Module Build Module,构建模块.所谓"构建",就是"构建"包及字节码文件,其实就是编译源码 ...

  5. project下build.gradle文件和module下buil.gradle

    前言 自己写了几个gradle文件模板,如果还在使用Support包开发的可以参考. 定义一个全局统一配置文件config.gradle Project目录下的config.gradle /*** 全 ...

  6. 【错误记录】Android Studio 编译报错 ( Installed Build Tools revision 31.0.0 is corrupted )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Executing tasks: [:dex_demo:assembleDebug, :app:assembleDebug] in project ...

  7. 用 golang 1.11 module 做项目版本管理

    go 1.11 有了对模块的实验性支持,大部分的子命令都知道如何处理一个模块,比如 run build install get list mod 子命令,第三方工具可能会支持的晚一些.到 go 1.1 ...

  8. Mastering Android NDK Build System - Part 1: Techniques with ndk-build

    This article is not a "Hello world!"-type tutorial for NDK. Although I will still provide ...

  9. can‘t load package: cannot find module providing package github.com/hyperledger/fabric/core/chaincod

    在执行fabric++源码编译时,出现以下问题: 直接make,报错 can't load package: cannot find module providing package github.c ...

最新文章

  1. mysql 数据泵_Oracle 数据泵详解
  2. Task02:青少年软件编程(Scratch)等级考试模拟卷(一级)
  3. 卷积神经网络(CNN)简介
  4. 阿里2022“研究型实习生”计划公布,开放200多个科研选题
  5. 每日英语:Relationship Repair: 10 Tips for Thinking Like a Therapist
  6. python的前端框架_web前端三大主流框架之Python异步框架如何工作?
  7. 温故而知新:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期
  8. 【Tools】Centos7.5安装MySQL5.7
  9. 通过js encodeURIComponent传到服务器的乱码问题
  10. linq from 多个sum_快手重拳打击劣质电商 7月以来封禁700多个团伙账号
  11. 悖论对计算机科学影响,数学和计算机科学的核心逻辑悖论
  12. 谜底是计算机的谜语英语,英语谜语(Riddle)  谜底
  13. 解读MySQL性能调优“金字塔”
  14. Android--android 中自定义菜单
  15. node项目报错had too many unstable restarts (16). Stopped. “errored”
  16. 工具使用,PS隐藏技能—对称绘画
  17. 大学web基础期末大作业~仿品优购页面制作(HTML+CSS+JavaScript)
  18. 不花钱也能使用迅雷的高速通…
  19. 电子商务数据分析,超详细宝典!
  20. batch批处理小记

热门文章

  1. android: 播放音频
  2. RTSP学习笔记(2)live555
  3. 关于表达式i+++i+++i++有感
  4. C++Primer再学习(3)
  5. 对于写bash脚本的朋友,read命令是不可或缺的,需要实践一下就可以了解read命令的大致用途: 编写一个脚本: #!/bin/bash # hao32 test read echo -e Pl
  6. hdu 3065 病毒侵袭持续中(AC自动机)
  7. NYOJ 330 一个简单的数学题
  8. This application has requested the Runtime to terminate it in an unusual way. Please contact the app
  9. 机器学习算法及实战——朴素贝叶斯
  10. 判断字符串NSString是否是整形或者浮点型