3DSlicer开发之路——Extensions(七)
Can an extension contain different types of modules ?
Yes. Extensions are used to package together all types of Slicer modules.
Should the name of the source repository match the name of the extension?(Extension命名的一些规则)
Assuming your extension is named AwesomeFilter, generally, we suggest to name the extension repository SlicerAwesomeFilter. Note that the following variations are also possible Slicer-AwesomeFilter, Slicer_AwesomeFilter, SlicerExtension-AwesomeFilter, SlicerExtension_AwesomeFilter.
We suggest you keep the Slicer prefix in the extension name when the extension is a Slicer interface to some third-party library (SlicerOpenIGTLink, SlicerElastix, SlicerOpenCV, …).(当你的extension是一些第三方库的Slicer 接口时,建议在extension 名中保留‘Slicer’前缀 )
Doing so will minimize confusion by clearly stating that the code base is associated with Slicer.
What is the Extensions Index ?
Think of the ExtensionsIndex as a repository containing a list of extension description files *.s4ext used by the Slicer extensions build system to build, test, package and upload extensions on the extensions server.(所谓的ExtensionsIndex其实就是包含众多extension description files *.s4ext 文件的库,这些文件描述了slicer整个Extensions系统的信息,通过这些文件包含的信息可以找到Extensions的源代码位置,应用这些,Slicer的extensions build system系统将会对这些Extensions进行build, test, package,并且将这些Extensions上传到 extensions server供用户使用)
Once uploaded on an extensions server, within Slicer, extensions can be installed using the extensions manager.
The extensions catalog provides Slicer users with a convenient way to access the extensions previously uploaded.
There are multiple branches on the ExtensionsIndex:
- master: This branch contain description files of extensions that will be built against Slicer nightly.(这个分支上description files对应的extensions 将会 针对Slicer nightly版本进行built)
- [...]
- 4.10: This branch contain description files of extensions that will be built against latest Slicer 4.10 available patch release.(将会 针对Slicer available patch release版本进行built)
The reasoning behind this approach is that since both the Slicer API and ABI associated with Slicer base libraries are changing often, compatibility of the extensions available for download is guaranteed by building extensions against every Slicer revisions.(这种方法背后的原因是,由于与Slicer基本库关联的Slicer API和ABI都在频繁地更改,因此可以通过创建针对单个Slicer修订版的extensions ,保证可下载的扩展的兼容性。)
It means that developer willing to have their extensions available on the different versions of Slicer will have to submit pull requests for each version.(也意味着开发人员如果想让他们的extensions 在不同版本的Slicer上可用,就必须为每个版本都提交pull requests。)