<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.3%2FDevelopers%2FFAQ%2FExtensions</id>
	<title>Documentation/4.3/Developers/FAQ/Extensions - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.3%2FDevelopers%2FFAQ%2FExtensions"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/FAQ/Extensions&amp;action=history"/>
	<updated>2026-05-12T04:25:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/FAQ/Extensions&amp;diff=61632&amp;oldid=prev</id>
		<title>Grundlett: Text replacement - &quot;slicerWiki/index.php&quot; to &quot;wiki&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/FAQ/Extensions&amp;diff=61632&amp;oldid=prev"/>
		<updated>2019-11-21T17:00:05Z</updated>

		<summary type="html">&lt;p&gt;Text replacement - &amp;quot;slicerWiki/index.php&amp;quot; to &amp;quot;wiki&amp;quot;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 17:00, 21 November 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l175&quot; &gt;Line 175:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 175:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#REDIRECT [[Documentation/Nightly/Modules/DoSomethingAwesome]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#REDIRECT [[Documentation/Nightly/Modules/DoSomethingAwesome]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For an example, see [http://www.slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki/index.php&lt;/del&gt;?title=Documentation/Nightly/Extensions/SkullStripper&amp;amp;action=edit here]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For an example, see [http://www.slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;?title=Documentation/Nightly/Extensions/SkullStripper&amp;amp;action=edit here]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;More details about redirection are available here: http://www.mediawiki.org/wiki/Help:Redirects&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;More details about redirection are available here: http://www.mediawiki.org/wiki/Help:Redirects&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l185&quot; &gt;Line 185:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 185:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For example:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For example:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set(EXTENSION_HOMEPAGE &amp;quot;http://slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki/index.php&lt;/del&gt;/Documentation/Nightly/Extensions/DoSomethingGreat&amp;quot;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set(EXTENSION_HOMEPAGE &amp;quot;http://slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;/Documentation/Nightly/Extensions/DoSomethingGreat&amp;quot;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set(EXTENSION_HOMEPAGE &amp;quot;http://slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki/index.php&lt;/del&gt;/Documentation/Nightly/Extensions/DoSomethingAwesome&amp;quot;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set(EXTENSION_HOMEPAGE &amp;quot;http://slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;/Documentation/Nightly/Extensions/DoSomethingAwesome&amp;quot;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note that this also apply for extension bundling only one module. Indeed, in this case the page will redirect to the appropriate module page. For example: http://www.slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki/index.php&lt;/del&gt;/Documentation/Nightly/Extensions/SkullStripper&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note that this also apply for extension bundling only one module. Indeed, in this case the page will redirect to the appropriate module page. For example: http://www.slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;/Documentation/Nightly/Extensions/SkullStripper&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== How to rename an extension to add new features ? ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== How to rename an extension to add new features ? ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Grundlett</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/FAQ/Extensions&amp;diff=35396&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.3</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/FAQ/Extensions&amp;diff=35396&amp;oldid=prev"/>
		<updated>2013-09-05T03:41:40Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.3&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;__TOC__&lt;br /&gt;
={{#titleparts: {{PAGENAME}} | | -1 }}=&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
='''Developer FAQ: {{{1}}}'''=&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Should the name of the source repository match the name of the extension ? ==&lt;br /&gt;
&lt;br /&gt;
Assuming your extension is named &amp;lt;code&amp;gt;AwesomeFilter&amp;lt;/code&amp;gt;, generally, we suggest to name the extension repository either &amp;lt;code&amp;gt;SlicerAwesomeFilter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slicer-AwesomeFilter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slicer_AwesomeFilter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SlicerExtension-AwesomeFilter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SlicerExtension_AwesomeFilter&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Doing so will minimize confusion by clearly stating that the code base is associated with Slicer.&lt;br /&gt;
&lt;br /&gt;
== What is the Extensions Index ? ==&lt;br /&gt;
&lt;br /&gt;
{{:Documentation/{{documentation/version}}/Developers/Extensions/Index}}&lt;br /&gt;
&lt;br /&gt;
== What is an API Key ? ==&lt;br /&gt;
&lt;br /&gt;
See http://en.wikipedia.org/wiki/Application_programming_interface_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to obtain an API key to submit on the extension server ? ==&lt;br /&gt;
{{:Documentation/{{documentation/version}}/Developers/Tutorials/ObtainExtensionServerApiKey}}&lt;br /&gt;
&lt;br /&gt;
== Where can I find the extension templates ? ==&lt;br /&gt;
&lt;br /&gt;
The extensions templates are available in the Slicer source tree: https://github.com/Slicer/Slicer/tree/master/Extensions/Testing/&lt;br /&gt;
&lt;br /&gt;
Using the [[Documentation/{{documentation/version}}/Developers/ModuleWizard|Wizard]], you could easily create a new extension without having to copy, rename and update manually every files.&lt;br /&gt;
&lt;br /&gt;
== How to build an extension ? ==&lt;br /&gt;
&lt;br /&gt;
Assuming that the source code of your extension is located in folder &amp;lt;code&amp;gt;MyExtension&amp;lt;/code&amp;gt;, this could be achieved doing:&lt;br /&gt;
&lt;br /&gt;
{|width = &amp;quot;100%&amp;quot;&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;| Makefile&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;| Visual Studio&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{{pre2|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ mkdir MyExtension-build&lt;br /&gt;
$ cd MyExtension-build&lt;br /&gt;
$ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DSlicer_DIR:PATH=/path/to/Slicer-Superbuild/Slicer-build ../MyExtension&lt;br /&gt;
$ make&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start CMake, select source and build directory&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add &amp;lt;code&amp;gt;Slicer_DIR&amp;lt;/code&amp;gt; entry to the cache&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;lt;code&amp;gt;Configure&amp;lt;/code&amp;gt;, select generator, then click on &amp;lt;code&amp;gt;Generate&amp;lt;/code&amp;gt; button.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;lt;code&amp;gt;MyExtension.sln&amp;lt;/code&amp;gt;, select &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; configuration, then menu &amp;lt;code&amp;gt;Project -&amp;gt; Build Solution&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to package an extension ? ==&lt;br /&gt;
&lt;br /&gt;
Assuming your extension has been built into folder &amp;lt;code&amp;gt;MyExtension-build&amp;lt;/code&amp;gt;, this could be achieved doing:&lt;br /&gt;
&lt;br /&gt;
{|width = &amp;quot;100%&amp;quot;&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;| Makefile&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;| Visual Studio&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{{pre2|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ make package&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;lt;code&amp;gt;MyExtension.sln&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;lt;code&amp;gt;PACKAGES&amp;lt;/code&amp;gt; project, then right click and select &amp;lt;code&amp;gt;Build&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to upload an extension ? ==&lt;br /&gt;
&lt;br /&gt;
Assuming your extension has been built and packaged into folder &amp;lt;code&amp;gt;MyExtension-build&amp;lt;/code&amp;gt;, this could be achieved by first re-configuring the project providing your [[#How_to_obtain_an_API_key_to_submit_on_the_extension_server_.3F|midas credentials]] and then building the &amp;lt;code&amp;gt;ExperimentalUploadOnly&amp;lt;/code&amp;gt; target:&lt;br /&gt;
&lt;br /&gt;
{|width = &amp;quot;100%&amp;quot;&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;| Makefile&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;| Visual Studio&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{{pre2|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cmake -DMIDAS_PACKAGE_EMAIL:STRING=&amp;lt;YOUR-MIDAS-LOGIN&amp;gt; -DMIDAS_PACKAGE_API_KEY:STRING=&amp;lt;YOUR-MIDAS-APIKEY&amp;gt; .&lt;br /&gt;
$ make ExperimentalUploadOnly&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start CMake, select source and build directory&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add &amp;lt;code&amp;gt;MIDAS_PACKAGE_EMAIL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MIDAS_PACKAGE_API_KEY&amp;lt;/code&amp;gt; entries to the cache&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;lt;code&amp;gt;MyExtension.sln&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; configuration&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;lt;code&amp;gt;ExperimentalUploadOnly&amp;lt;/code&amp;gt; project, then right click and select &amp;lt;code&amp;gt;Build&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What are the extension specific targets: ExperimentalUpload, ExperimentalUploadOnly, ... ? ==&lt;br /&gt;
&lt;br /&gt;
Slicer extension build system provides the developer with a set of convenient targets allowing to build and upload extensions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;alternate&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Target name&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;Experimental&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Configure, build, test the extension and publish result on CDash.&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ExperimentalUpload&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Equivalent to Experimental target followed by packaging and upload of the extension on the extension server.&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;ExperimentalUploadOnly&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Only proceed to the upload of the extension on the extension server.&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;BUILD_TESTS&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Locally execute the test&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;PACKAGE&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Locally package the extension&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Is --launch flag available for a MacOSX installed Slicer.app ?==&lt;br /&gt;
&lt;br /&gt;
On MacOSx, running Slicer with the --help argument does NOT list the usual launcher related options.&lt;br /&gt;
&lt;br /&gt;
 $ ./Slicer.app/Contents/MacOS/Slicer --help&lt;br /&gt;
 Usage&lt;br /&gt;
  Slicer [options]&lt;br /&gt;
  &lt;br /&gt;
  Options&lt;br /&gt;
    --, --ignore-rest                     Ignores the rest of the labeled arguments following this flag. (default: false)&lt;br /&gt;
    -h, --help                            Display available command line arguments.&lt;br /&gt;
    [...]&lt;br /&gt;
    --version                             Displays version information and exits.&lt;br /&gt;
&lt;br /&gt;
To provide some background information, when generating the package that will be distributed, an application bundle &amp;lt;code&amp;gt;Slicer.app&amp;lt;/code&amp;gt; is created. As explained [http://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFBundles/Introduction/Introduction.html here], a bundle is a directory with a standardized hierarchical structure that holds executable code and the resources used by that code. It means that since all libraries contained within a bundle are referenced relatively to the location of either the CLI or the Slicer executable, the use of launcher does NOT make sens.&lt;br /&gt;
&lt;br /&gt;
To help fixing-up the libraries, executables and plugins so that they reference each other in a relative way, CMake provides us with the [http://www.cmake.org/cmake/help/v2.8.8/cmake.html#module:BundleUtilities BundleUtilities] module.&lt;br /&gt;
&lt;br /&gt;
This module is used in two situations:&lt;br /&gt;
# Fixup of Slicer application itself. See [https://github.com/Slicer/Slicer/blob/master/CMake/SlicerCPack.cmake#L36-68 SlicerCPack.cmake#L36-68] and [https://github.com/Slicer/Slicer/blob/master/CMake/SlicerCPackBundleFixup.cmake.in SlicerCPackBundleFixup.cmake.in]&lt;br /&gt;
# Fixup of an extension package. See [https://github.com/Slicer/Slicer/blob/master/CMake/SlicerExtensionCPack.cmake#L126-143 SlicerExtensionCPack.cmake#L126-143] and [https://github.com/Slicer/Slicer/blob/master/CMake/SlicerExtensionCPackBundleFixup.cmake.in SlicerExtensionCPackBundleFixup.cmake.in]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the difference between Documentation/Nightly/Modules and Documentation/Nightly/Extensions ? ==&lt;br /&gt;
&lt;br /&gt;
As suggested by the namespace names:&lt;br /&gt;
* All module documentation pages should be located under &amp;lt;code&amp;gt;Documentation/Nightly/Modules&amp;lt;/code&amp;gt;&lt;br /&gt;
* All extension documentation pages should be located under &amp;lt;code&amp;gt;Documentation/Nightly/Extensions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, if an an extension named &amp;lt;code&amp;gt;DoSomethingGreat&amp;lt;/code&amp;gt; bundles three modules &amp;lt;code&amp;gt;ModuleA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ModuleB&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ModuleC&amp;lt;/code&amp;gt;. The following pages should be created:&lt;br /&gt;
* &amp;lt;code&amp;gt;Documentation/Nightly/Extensions/DoSomethingGreat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;Documentation/Nightly/Modules/ModuleA&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;Documentation/Nightly/Modules/ModuleB&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;Documentation/Nightly/Modules/ModuleC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In case your extension bundles only one module, the extension name is expected to match the module name. For example, if your extension is named &amp;lt;code&amp;gt;DoSomethingAwesome&amp;lt;/code&amp;gt;, the associated module is expected to be named &amp;lt;code&amp;gt;DoSomethingAwesome&amp;lt;/code&amp;gt;. The following pages will then be created:&lt;br /&gt;
* &amp;lt;code&amp;gt;Documentation/Nightly/Extensions/DoSomethingAwesome&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;Documentation/Nightly/Modules/DoSomethingAwesome&amp;lt;/code&amp;gt;&lt;br /&gt;
where page &amp;lt;code&amp;gt;Extensions/DoSomethingAwesome&amp;lt;/code&amp;gt; redirect to page &amp;lt;code&amp;gt;Modules/DoSomethingAwesome&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup a redirection, simply add the following text to page &amp;lt;code&amp;gt;Extensions/DoSomethingAwesome&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#REDIRECT [[Documentation/Nightly/Modules/DoSomethingAwesome]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For an example, see [http://www.slicer.org/slicerWiki/index.php?title=Documentation/Nightly/Extensions/SkullStripper&amp;amp;action=edit here]&lt;br /&gt;
&lt;br /&gt;
More details about redirection are available here: http://www.mediawiki.org/wiki/Help:Redirects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Which URL should be associated with EXTENSION_HOMEPAGE metadata ? ==&lt;br /&gt;
&lt;br /&gt;
Extensions available through the Slicer Extensions Catalog are expected to have a page created under the &amp;lt;code&amp;gt;Nightly&amp;lt;/code&amp;gt; documentation namespace. The corresponding URL should be associated with the &amp;lt;code&amp;gt;EXTENSION_HOMEPAGE&amp;lt;/code&amp;gt; metadata.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set(EXTENSION_HOMEPAGE &amp;quot;http://slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/DoSomethingGreat&amp;quot;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;set(EXTENSION_HOMEPAGE &amp;quot;http://slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/DoSomethingAwesome&amp;quot;)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this also apply for extension bundling only one module. Indeed, in this case the page will redirect to the appropriate module page. For example: http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/SkullStripper&lt;br /&gt;
&lt;br /&gt;
== How to rename an extension to add new features ? ==&lt;br /&gt;
&lt;br /&gt;
If you created an extension to perform Task1, but later on, your module is getting more generic and you add some other tasks, the name of your extension might change.&lt;br /&gt;
In order to rename, your extension, you should:&lt;br /&gt;
* Remove your old extension from the ExtensionsIndex&lt;br /&gt;
* Then, submit your extension again (including new features) with a new name&lt;br /&gt;
* Make also sure to add redirection from the &amp;quot;deprecated&amp;quot; module documentation to the &amp;quot;new&amp;quot; pages. On the Slicer wiki, this could be using the [http://www.mediawiki.org/wiki/Help:Redirects #REDIRECT] instruction.&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>