<?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.4%2FDevelopers%2FFAQ%2FExtensions</id>
	<title>Documentation/4.4/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.4%2FDevelopers%2FFAQ%2FExtensions"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/FAQ/Extensions&amp;action=history"/>
	<updated>2026-04-10T01:20:27Z</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.4/Developers/FAQ/Extensions&amp;diff=62512&amp;oldid=prev</id>
		<title>Grundlett: Text replacement - &quot;http://wiki.slicer.org/slicerWiki/images/&quot; to &quot;http://www.slicer.org/w/img_auth.php/&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/FAQ/Extensions&amp;diff=62512&amp;oldid=prev"/>
		<updated>2019-11-27T12:31:58Z</updated>

		<summary type="html">&lt;p&gt;Text replacement - &amp;quot;http://wiki.slicer.org/slicerWiki/images/&amp;quot; to &amp;quot;http://www.slicer.org/w/img_auth.php/&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 12:31, 27 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-l341&quot; &gt;Line 341:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 341:&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;   set(EXTENSION_DESCRIPTION &amp;quot;This is an example of extension bundling N module(s)&amp;quot;)&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;   set(EXTENSION_DESCRIPTION &amp;quot;This is an example of extension bundling N module(s)&amp;quot;)&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;   set(EXTENSION_ICONURL &amp;quot;http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/Extensions/Testing/EmptyExtensionTemplate/EmptyExtensionTemplate.png?revision=21746&amp;amp;view=co&amp;quot;)&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;   set(EXTENSION_ICONURL &amp;quot;http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/Extensions/Testing/EmptyExtensionTemplate/EmptyExtensionTemplate.png?revision=21746&amp;amp;view=co&amp;quot;)&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;   set(EXTENSION_SCREENSHOTURLS &amp;quot;http://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/del&gt;.slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;images&lt;/del&gt;/4/42/Slicer-r19441-EmptyExtensionTemplate-screenshot.png&amp;quot;)&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;   set(EXTENSION_SCREENSHOTURLS &amp;quot;http://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;www&lt;/ins&gt;.slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;w&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;img_auth.php&lt;/ins&gt;/4/42/Slicer-r19441-EmptyExtensionTemplate-screenshot.png&amp;quot;)&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;endif()&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;endif()&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 colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l370&quot; &gt;Line 370:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 370:&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;set(EXTENSION_DESCRIPTION &amp;quot;This is an example of empty extension&amp;quot;)&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;set(EXTENSION_DESCRIPTION &amp;quot;This is an example of empty extension&amp;quot;)&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;set(EXTENSION_ICONURL &amp;quot;http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/Extensions/Testing/EmptyExtensionTemplate/EmptyExtensionTemplate.png?revision=21746&amp;amp;view=co&amp;quot;)&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;set(EXTENSION_ICONURL &amp;quot;http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/Extensions/Testing/EmptyExtensionTemplate/EmptyExtensionTemplate.png?revision=21746&amp;amp;view=co&amp;quot;)&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;set(EXTENSION_SCREENSHOTURLS &amp;quot;http://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/del&gt;.slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;images&lt;/del&gt;/4/42/Slicer-r19441-EmptyExtensionTemplate-screenshot.png&amp;quot;)&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;set(EXTENSION_SCREENSHOTURLS &amp;quot;http://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;www&lt;/ins&gt;.slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;w&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;img_auth.php&lt;/ins&gt;/4/42/Slicer-r19441-EmptyExtensionTemplate-screenshot.png&amp;quot;)&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;find_package(Slicer REQUIRED)&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;find_package(Slicer REQUIRED)&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.4/Developers/FAQ/Extensions&amp;diff=61983&amp;oldid=prev</id>
		<title>Unknown user: 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.4/Developers/FAQ/Extensions&amp;diff=61983&amp;oldid=prev"/>
		<updated>2019-11-21T17:33:46Z</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:33, 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-l225&quot; &gt;Line 225:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 225:&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-l235&quot; &gt;Line 235:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 235:&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;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l336&quot; &gt;Line 336:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 336:&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;if(NOT Slicer_SOURCE_DIR)&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;if(NOT Slicer_SOURCE_DIR)&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;   set(EXTENSION_NAME EmptyExtensionTemplate)&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;   set(EXTENSION_NAME EmptyExtensionTemplate)&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;   set(EXTENSION_HOMEPAGE &amp;quot;http://www.slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki/index.php&lt;/del&gt;/Documentation/Nightly/Extensions/EmptyExtensionTemplate&amp;quot;)&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;   set(EXTENSION_HOMEPAGE &amp;quot;http://www.slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;/Documentation/Nightly/Extensions/EmptyExtensionTemplate&amp;quot;)&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;   set(EXTENSION_CATEGORY &amp;quot;Examples&amp;quot;)&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;   set(EXTENSION_CATEGORY &amp;quot;Examples&amp;quot;)&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;   set(EXTENSION_CONTRIBUTORS &amp;quot;Jean-Christophe Fillion-Robin (Kitware)&amp;quot;)&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;   set(EXTENSION_CONTRIBUTORS &amp;quot;Jean-Christophe Fillion-Robin (Kitware)&amp;quot;)&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-l365&quot; &gt;Line 365:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 365:&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;project(EmptyExtensionTemplate)&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;project(EmptyExtensionTemplate)&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;set(EXTENSION_HOMEPAGE &amp;quot;http://www.slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki/index.php&lt;/del&gt;/Documentation/Nightly/Extensions/EmptyExtensionTemplate&amp;quot;)&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;set(EXTENSION_HOMEPAGE &amp;quot;http://www.slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;/Documentation/Nightly/Extensions/EmptyExtensionTemplate&amp;quot;)&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;set(EXTENSION_CATEGORY &amp;quot;Examples&amp;quot;)&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;set(EXTENSION_CATEGORY &amp;quot;Examples&amp;quot;)&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;set(EXTENSION_CONTRIBUTORS &amp;quot;Jean-Christophe Fillion-Robin (Kitware)&amp;quot;)&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;set(EXTENSION_CONTRIBUTORS &amp;quot;Jean-Christophe Fillion-Robin (Kitware)&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Unknown user</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/FAQ/Extensions&amp;diff=42181&amp;oldid=prev</id>
		<title>JChris.FillionR at 16:23, 15 July 2015</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/FAQ/Extensions&amp;diff=42181&amp;oldid=prev"/>
		<updated>2015-07-15T16:23:57Z</updated>

		<summary type="html">&lt;p&gt;&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 16:23, 15 July 2015&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-l4&quot; &gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&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;='''Developer FAQ: {{{1}}}'''=&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;='''Developer FAQ: {{{1}}}'''=&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;/includeonly&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;/includeonly&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{:Documentation/{{documentation/version}}/FAQ/Extensions}}&lt;/ins&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;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;== What is an extension description file ? ==&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;== What is an extension description file ? ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JChris.FillionR</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/FAQ/Extensions&amp;diff=40466&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/FAQ/Extensions&amp;diff=40466&amp;oldid=prev"/>
		<updated>2014-12-25T06:53:16Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.4&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;
== What is an extension description file ? ==&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|Description file description]]&lt;br /&gt;
&lt;br /&gt;
== Can an extension contain different type of modules ? ==&lt;br /&gt;
&lt;br /&gt;
Yes. Extensions are used to package together all type of Slicer modules.&lt;br /&gt;
&lt;br /&gt;
See also [[Documentation/{{documentation/version}}/Developers/FAQ#What_is_an_extension_.3F|What_is_an_extension ?]]&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;
== 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;
== How to cache API credentials ? ==&lt;br /&gt;
&lt;br /&gt;
There is now a new feature that allow you to &amp;quot;cache&amp;quot; your credential [1]. If you set the two environment variables, &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;, you would simply need to configure your extension using:&lt;br /&gt;
&lt;br /&gt;
{{pre2|&amp;lt;nowiki&amp;gt;&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 ExperimentalUpload&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[1] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=22457&lt;br /&gt;
&lt;br /&gt;
== Where can I find the extension templates ? ==&lt;br /&gt;
&lt;br /&gt;
The module and extension templates are available in the Slicer source tree: https://github.com/Slicer/Slicer/tree/master/Utilities/Templates/&lt;br /&gt;
&lt;br /&gt;
Using the [[Documentation/{{documentation/version}}/Developers/ExtensionWizard|Extension 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;
&amp;lt;ol style=&amp;quot;list-style-type:none; border-left:thick solid red; padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{:Documentation/{{documentation/version}}/Developers/Tutorials/BuildTestPackageDistributeExtensions/ExperimentalFolderAccess}}&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&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;
== Can an extension depend on other extensions ? ==&lt;br /&gt;
&lt;br /&gt;
Yes. An &amp;lt;code&amp;gt;ExtensionFoo&amp;lt;/code&amp;gt; can depend on &amp;lt;code&amp;gt;ExtensionBar&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dependency should be specified as a list by setting the variable &amp;lt;code&amp;gt;EXTENSION_DEPENDS&amp;lt;/code&amp;gt; in the extension &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, if you have &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; and &amp;lt;code&amp;gt;ModuleA&amp;lt;/code&amp;gt; can be used as standalone one. You could create the following extensions:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Extension1&amp;lt;/code&amp;gt; containing  &amp;lt;code&amp;gt;ModuleA&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;Extension2&amp;lt;/code&amp;gt; containing  &amp;lt;code&amp;gt;ModuleB&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ModuleC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and add the following variable to &amp;lt;code&amp;gt;Extension2/CMakeLists.txt&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set(EXTENSION_DEPENDS Extension1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''User''': &lt;br /&gt;
* If user installs &amp;lt;code&amp;gt;Extension2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Extension1&amp;lt;/code&amp;gt; will automatically be installed first.&lt;br /&gt;
&lt;br /&gt;
'''Developer''': &lt;br /&gt;
* The generated extension description file have a &amp;lt;code&amp;gt;depends&amp;lt;/code&amp;gt; field. See [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|here]] for details.&lt;br /&gt;
* The extension framework will build the extension in order. When building &amp;lt;code&amp;gt;Extension2&amp;lt;/code&amp;gt;, it will pass the CMake option &amp;lt;code&amp;gt;-DExtension1_DIR:PATH=/path/to/Extension1-build&amp;lt;/code&amp;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;br /&gt;
&lt;br /&gt;
== How to check if an extension is built by Slicer Extensions build system ? ==&lt;br /&gt;
&lt;br /&gt;
Sometimes an extension could be built either as a standalone package or as a Slicer extension. &lt;br /&gt;
&lt;br /&gt;
To differenciate the two cases, the developer could check for the value of:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;ExtensionName&amp;gt;_BUILD_SLICER_EXTENSION&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This variable will be set to ON when the extension is built by the Slicer Extensions build system.&lt;br /&gt;
&lt;br /&gt;
For details: https://github.com/Slicer/Slicer/blob/ff5f5a866d8afcaa0f2e6f615cc8f8cf07361741/Extensions/CMake/SlicerBlockBuildPackageAndUploadExtension.cmake#L95&lt;br /&gt;
&lt;br /&gt;
== How often extensions are uploaded on the extensions server ? ==&lt;br /&gt;
&lt;br /&gt;
Slicer extensions are built and uploaded on the [[Documentation/{{documentation/version}}/Developers/Extensions/Server|extensions server]] every day.&lt;br /&gt;
&lt;br /&gt;
To be more specific, the frequency of extensions build and upload associated with:&lt;br /&gt;
* Slicer nightly package occurs '''every night''' and also '''continuously''' during the day.&lt;br /&gt;
* Slicer {{documentation/currentversion}} lastest stable release package occurs '''every night'''.&lt;br /&gt;
&lt;br /&gt;
== Will an extension be uploaded if associated tests are failing ? ==&lt;br /&gt;
&lt;br /&gt;
Independently of the extension test results, if the extension could be successfully packaged, it will be uploaded on the [[Documentation/{{documentation/version}}/Developers/Extensions/Server|extensions server]].&lt;br /&gt;
&lt;br /&gt;
== How do I associate a remote with my local extension git source directory ? ==&lt;br /&gt;
&lt;br /&gt;
1) Start a terminal (or Git Bash on Windows)&lt;br /&gt;
&lt;br /&gt;
2) Get the associated SSH remote url. [https://help.github.com/articles/which-remote-url-should-i-use#cloning-with-ssh Need help ?]&lt;br /&gt;
&lt;br /&gt;
3) Associate the remote URL with your local git source tree&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git remote add origin git://github.com/&amp;lt;username&amp;gt;/MyExtension&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Which remote name is expected for extension git checkout ? ==&lt;br /&gt;
&lt;br /&gt;
When packaging an extension and generating the associated [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|description file]], the system will look for a remote named &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In case you get the error reported below, you will have to either rename or add a remote. [http://git-scm.com/book/en/Git-Basics-Working-with-Remotes Need help ?]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CMake Warning at /path/to/Slicer/CMake/FindGit.cmake:144 (message):&lt;br /&gt;
No remote origin set for git repository: /path/to/MyExtension&lt;br /&gt;
Call Stack (most recent call first):&lt;br /&gt;
/path/to/Slicer/CMake/SlicerMacroExtractRepositoryInfo.cmake:99 (GIT_WC_INFO)&lt;br /&gt;
/path/to/Slicer/CMake/SlicerExtensionCPack.cmake:55 (SlicerMacroExtractRepositoryInfo)&lt;br /&gt;
CMakeLists.txt:25 (include)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why ExtensionWizard failed to describe extension: &amp;quot;script does not set 'EXTENSION_HOMEPAGE'&amp;quot; ? ==&lt;br /&gt;
&lt;br /&gt;
The issue is that the your extension has a &amp;quot;non standard&amp;quot; layout and the wizard was now way of extracting the expected information.&lt;br /&gt;
&lt;br /&gt;
Similar issue has been discussed and reported for the &amp;quot;SPHARM-PDM&amp;quot; or UKF extension.&lt;br /&gt;
&lt;br /&gt;
First half of the solution would be to move the metadata from Common.cmake to CMakeLists.txt as it is done in [1]&lt;br /&gt;
&lt;br /&gt;
Then, you could make sure there is a project() statement by following what is suggested in [2]&lt;br /&gt;
&lt;br /&gt;
If you prefer not to re-organize your extension, you could still contribute extension description file. See [[Documentation/{{documentation/version}}/Developers/Tutorials/Contribute_Extension_Description_File|here]] for details.&lt;br /&gt;
&lt;br /&gt;
[1] http://www.nitrc.org/plugins/scmsvn/viewcvs.php?view=rev&amp;amp;root=spharm-pdm&amp;amp;revision=228&lt;br /&gt;
&lt;br /&gt;
[2] http://www.na-mic.org/Bug/view.php?id=3737#c12081&lt;br /&gt;
&lt;br /&gt;
== Is project() statement allowed in extension CMakeLists.txt ? ==&lt;br /&gt;
&lt;br /&gt;
Following Slicer [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=22038 r22038], the project statement is required.&lt;br /&gt;
&lt;br /&gt;
== Is call to &amp;quot;if(NOT Slicer_SOURCE_DIR)&amp;quot; required to protect &amp;quot;find_package(Slicer)&amp;quot; in extension CMakeLists.txt ? ==&lt;br /&gt;
&lt;br /&gt;
Following Slicer [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=22063 r22063], protecting call to &amp;lt;code&amp;gt;find_package(Slicer)&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;if(NOT Slicer_SOURCE_DIR)&amp;lt;/code&amp;gt;&lt;br /&gt;
is optional and should be removed to keep code simpler and easier to maintain.&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
&lt;br /&gt;
{{pre2|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 2.8.9)&lt;br /&gt;
&lt;br /&gt;
if(NOT Slicer_SOURCE_DIR)&lt;br /&gt;
  find_package(Slicer COMPONENTS ConfigurePrerequisites)&lt;br /&gt;
endif()&lt;br /&gt;
&lt;br /&gt;
if(NOT Slicer_SOURCE_DIR)&lt;br /&gt;
  set(EXTENSION_NAME EmptyExtensionTemplate)&lt;br /&gt;
  set(EXTENSION_HOMEPAGE &amp;quot;http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/EmptyExtensionTemplate&amp;quot;)&lt;br /&gt;
  set(EXTENSION_CATEGORY &amp;quot;Examples&amp;quot;)&lt;br /&gt;
  set(EXTENSION_CONTRIBUTORS &amp;quot;Jean-Christophe Fillion-Robin (Kitware)&amp;quot;)&lt;br /&gt;
  set(EXTENSION_DESCRIPTION &amp;quot;This is an example of extension bundling N module(s)&amp;quot;)&lt;br /&gt;
  set(EXTENSION_ICONURL &amp;quot;http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/Extensions/Testing/EmptyExtensionTemplate/EmptyExtensionTemplate.png?revision=21746&amp;amp;view=co&amp;quot;)&lt;br /&gt;
  set(EXTENSION_SCREENSHOTURLS &amp;quot;http://wiki.slicer.org/slicerWiki/images/4/42/Slicer-r19441-EmptyExtensionTemplate-screenshot.png&amp;quot;)&lt;br /&gt;
endif()&lt;br /&gt;
&lt;br /&gt;
if(NOT Slicer_SOURCE_DIR)&lt;br /&gt;
  find_package(Slicer REQUIRED)&lt;br /&gt;
  include(${Slicer_USE_FILE})&lt;br /&gt;
endif()&lt;br /&gt;
&lt;br /&gt;
add_subdirectory(ModuleA)&lt;br /&gt;
&lt;br /&gt;
if(NOT Slicer_SOURCE_DIR)&lt;br /&gt;
  include(${Slicer_EXTENSION_CPACK})&lt;br /&gt;
endif()&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
&lt;br /&gt;
{{pre2|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 2.8.9)&lt;br /&gt;
&lt;br /&gt;
find_package(Slicer COMPONENTS ConfigurePrerequisites)&lt;br /&gt;
&lt;br /&gt;
project(EmptyExtensionTemplate)&lt;br /&gt;
&lt;br /&gt;
set(EXTENSION_HOMEPAGE &amp;quot;http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/EmptyExtensionTemplate&amp;quot;)&lt;br /&gt;
set(EXTENSION_CATEGORY &amp;quot;Examples&amp;quot;)&lt;br /&gt;
set(EXTENSION_CONTRIBUTORS &amp;quot;Jean-Christophe Fillion-Robin (Kitware)&amp;quot;)&lt;br /&gt;
set(EXTENSION_DESCRIPTION &amp;quot;This is an example of empty extension&amp;quot;)&lt;br /&gt;
set(EXTENSION_ICONURL &amp;quot;http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/Extensions/Testing/EmptyExtensionTemplate/EmptyExtensionTemplate.png?revision=21746&amp;amp;view=co&amp;quot;)&lt;br /&gt;
set(EXTENSION_SCREENSHOTURLS &amp;quot;http://wiki.slicer.org/slicerWiki/images/4/42/Slicer-r19441-EmptyExtensionTemplate-screenshot.png&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
find_package(Slicer REQUIRED)&lt;br /&gt;
include(${Slicer_USE_FILE})&lt;br /&gt;
&lt;br /&gt;
add_subdirectory(ModuleA)&lt;br /&gt;
&lt;br /&gt;
include(${Slicer_EXTENSION_CPACK})&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Why is the --contribute option is not available with the ExtensionWizard ? ==&lt;br /&gt;
&lt;br /&gt;
Wizard contribute option is available only (1) if Slicer is built with OpenSSL support or (2) directly from the nightly.&lt;br /&gt;
&lt;br /&gt;
To build Slicer with SSL support, you need to build (or download) Qt with SSL support and configure Slicer with &amp;lt;code&amp;gt;-DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How dependent extensions are configured and built ? ==&lt;br /&gt;
&lt;br /&gt;
If an ExtensionB depends on an ExtensionA, ExtensionA should be listed as dependency in the metadata of ExtensionB.&lt;br /&gt;
&lt;br /&gt;
This can be done setting &amp;lt;code&amp;gt;EXTENSION_DEPENDS&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; or by specifying &amp;lt;code&amp;gt;depends&amp;lt;/code&amp;gt; field in the [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|description file]].&lt;br /&gt;
&lt;br /&gt;
Doing so will ensure that:&lt;br /&gt;
* (1) the extension build system configure the extensions in the right order&lt;br /&gt;
* (2) ExtensionB is configured with option &amp;lt;code&amp;gt;ExtensionA_DIR&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>