<?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.6%2FDevelopers%2FBuild_ExtensionsIndex</id>
	<title>Documentation/4.6/Developers/Build ExtensionsIndex - 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.6%2FDevelopers%2FBuild_ExtensionsIndex"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.6/Developers/Build_ExtensionsIndex&amp;action=history"/>
	<updated>2026-04-04T07:02:38Z</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.6/Developers/Build_ExtensionsIndex&amp;diff=47847&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.6/Developers/Build_ExtensionsIndex&amp;diff=47847&amp;oldid=prev"/>
		<updated>2016-11-07T07:37:58Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.6&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;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This page explain how to build an ExtensionsIndex.&lt;br /&gt;
&lt;br /&gt;
Think of the ExtensionsIndex as a repository containing a list of [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|extension description files]] (*.s4ext) used by the Slicer extensions build system to build, test, package and upload extensions on an [[Documentation/{{documentation/version}}/Developers/Extensions/Server|extensions server]].&lt;br /&gt;
&lt;br /&gt;
Once uploaded on an extensions server, within Slicer, extensions can be installed using the [[Documentation/{{documentation/version}}/SlicerApplication/ExtensionsManager|extensions manager]].&lt;br /&gt;
&lt;br /&gt;
There are two possible approaches to build it:&lt;br /&gt;
* [[#Manual_build|Manual build]]&lt;br /&gt;
* [[#Dashboard_driven_build|Dashboard driven build]]&lt;br /&gt;
&lt;br /&gt;
== Manual build ==&lt;br /&gt;
&lt;br /&gt;
Locally building an extension index provides a convenient way to:&lt;br /&gt;
&lt;br /&gt;
* check extension description files are valid&lt;br /&gt;
* upload one or more extensions at ones to check that Slicer can download and install them&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Given a directory containing one or more extension description files, with the help of the extensions build system it is possible to manually &lt;br /&gt;
configure and build the associated extensions specifying the following CMake options:&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;td&amp;gt;&amp;lt;code&amp;gt;Slicer_DIR&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Path to Slicer build tree&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;Slicer_EXTENSION_DESCRIPTION_DIR&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Path to folder containing extension description files&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;
Optionally, it is also possible to specify:&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;td&amp;gt;&amp;lt;code&amp;gt;[http://www.cmake.org/cmake/help/v2.8.8/cmake.html#variable:CMAKE_BUILD_TYPE CMAKE_BUILD_TYPE]&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;On unix-like platform, should match the build type of the associated Slicer build directory&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;Slicer_UPLOAD_EXTENSIONS&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;By default set to &amp;lt;code&amp;gt;OFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;If enabled, extension builds will be submitted to Slicer dashboard and associated packages will be uploaded to extensions 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;MIDAS_PACKAGE_URL&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;MIDAS extensions server URL speciManualfying where the extension should be uploaded. For example http://slicer.kitware.com/midas3&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;MIDAS_PACKAGE_EMAIL&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Email allowing to authenticate to the extensions 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;MIDAS_PACKAGE_API_KEY&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;Token allowing to authenticate to the extensions server.&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;
&lt;br /&gt;
The following examples are specific to unix-like platforms and can easily be adapted for windows.&lt;br /&gt;
&lt;br /&gt;
=== Build your own set of extensions against Slicer trunk build tree ===&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
&lt;br /&gt;
# Folder &amp;lt;code&amp;gt;SlicerExtensionsCustomIndex&amp;lt;/code&amp;gt; contains the [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|extension description files]] of your choice&lt;br /&gt;
# Slicer trunk has been checkout into &amp;lt;code&amp;gt;/path/to/Slicer-master&amp;lt;/code&amp;gt; and built into &amp;lt;code&amp;gt;/path/to/Slicer-master-SuperBuild-Release&amp;lt;/code&amp;gt;&lt;br /&gt;
# To upload extension(s) on the [[Documentation/{{documentation/version}}/Developers/Extensions/Server|extensions server]], an [[Documentation/{{documentation/version}}/Developers/Tutorials/ObtainExtensionServerApiKey|API key]] has been obtained.&lt;br /&gt;
&lt;br /&gt;
The associated extensions could be built doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls ExtensionsIndex&lt;br /&gt;
foo.s4ext&lt;br /&gt;
bar.s4ext&lt;br /&gt;
$ mkdir ExtensionsIndex-build&lt;br /&gt;
$ cd ExtensionsIndex-build&lt;br /&gt;
$ export SLICER=${HOME}/slicer4/latest/Slicer&lt;br /&gt;
$ cmake -DSlicer_DIR:PATH=${SLICER}-SuperBuild-Release/Slicer-build \&lt;br /&gt;
 -DSlicer_EXTENSION_DESCRIPTION_DIR:PATH=../ExtensionsIndex \&lt;br /&gt;
 -DCMAKE_BUILD_TYPE:STRING=Release \&lt;br /&gt;
 ${SLICER}/Extensions/CMake&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to submit the configure/build/test results on [http://slicer.cdash.org/index.php?project=Slicer4#Extensions-Experimental CDash] &amp;lt;code&amp;gt;Extensions-Experimental&amp;lt;/code&amp;gt; track&lt;br /&gt;
and upload the extension on the [[Documentation/{{documentation/version}}/Developers/Extensions/Server|extensions server]] of your choice, &lt;br /&gt;
there are two options:&lt;br /&gt;
&lt;br /&gt;
# [Build the target `ExperimentalUpload` associated with each extensions](#extension-build-test-package-and-upload-using-experimentalupload-target)&lt;br /&gt;
# [Configure (or re-configure) the project passing the options `Slicer_UPLOAD_EXTENSIONS`, &lt;br /&gt;
`MIDAS_PACKAGE_URL`, `MIDAS_PACKAGE_EMAIL` and `MIDAS_PACKAGE_API_KEY`](#extensions-build-test-package-and-upload-using-slicer_upload_extensions-option)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Extension build, test, package and upload using `ExperimentalUpload` target ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd SlicerExtensionsCustomIndex-build&lt;br /&gt;
$ cd foo-build&lt;br /&gt;
$ cmake -DMIDAS_PACKAGE_URL:STRING=http://slicer.kitware.com/midas3 \&lt;br /&gt;
 -DMIDAS_PACKAGE_EMAIL:STRING=jchris.fillionr@kitware.com \&lt;br /&gt;
 -DMIDAS_PACKAGE_API_KEY:STRING=a0b012c0123d012abc01234a012345a0 .&lt;br /&gt;
$ make ExperimentalUpload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=600px perrow=2&amp;gt;&lt;br /&gt;
File:SlicerExtensionsCustomIndex-CDash-Foo-Extension-ExperimentalUpload.png&lt;br /&gt;
File:SlicerExtensionsCustomIndex-CDash-foo-download-link.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simply submit the configure/build/test results on CDash skipping the upload part, building target `Experimental` &lt;br /&gt;
is sufficient. This is expected to work only for Slicer &amp;gt;= 4.1.2. See issue [http://www.na-mic.org/Bug/view.php?id=2166 #2166]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd SlicerExtensionsCustomIndex-build&lt;br /&gt;
$ cd foo-build&lt;br /&gt;
$ make Experimental&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=600px perrow=2&amp;gt;&lt;br /&gt;
File:SlicerExtensionsCustomIndex-CDash-Foo-Extension-Experimental.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Extensions build, test, package and upload using `Slicer_UPLOAD_EXTENSIONS` option ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd SlicerExtensionsCustomIndex-build&lt;br /&gt;
$ cmake -DSlicer_DIR:PATH=/path/to/Slicer-master-SuperBuild-Release/Slicer-build \&lt;br /&gt;
 -DSlicer_EXTENSION_DESCRIPTION_DIR:PATH=/path/to/SlicerExtensionsCustomIndex \&lt;br /&gt;
 -DCMAKE_BUILD_TYPE:STRING=Release \&lt;br /&gt;
 -DSlicer_UPLOAD_EXTENSIONS:BOOL=ON \&lt;br /&gt;
 -DMIDAS_PACKAGE_URL:STRING=http://slicer.kitware.com/midas3 \&lt;br /&gt;
 -DMIDAS_PACKAGE_EMAIL:STRING=jchris.fillionr@kitware.com \&lt;br /&gt;
 -DMIDAS_PACKAGE_API_KEY:STRING=a0b012c0123d012abc01234a012345a0 \&lt;br /&gt;
 /path/to/Slicer-master/Extensions/CMake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build your own set of extensions against Slicer {{Documentation/currentversion}} build tree ===&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
&lt;br /&gt;
# Folder &amp;lt;code&amp;gt;SlicerExtensionsCustomIndex&amp;lt;/code&amp;gt; contains the [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|extension description files]] of your choice&lt;br /&gt;
# Slicer {{Documentation/currentversion}} has been checkout into &amp;lt;code&amp;gt;/path/to/Slicer-411&amp;lt;/code&amp;gt; and built into &amp;lt;code&amp;gt;/path/to/Slicer-411-SuperBuild-Release&amp;lt;/code&amp;gt;&lt;br /&gt;
# To upload extension(s) on the [[Documentation/{{documentation/version}}/Developers/Extensions/Server|extensions server]], an [[Documentation/{{documentation/version}}/Developers/Tutorials/ObtainExtensionServerApiKey|API key]] has been obtained.&lt;br /&gt;
&lt;br /&gt;
The associated extensions could be built following the instruction listed in the previous section &lt;br /&gt;
and changing occurrences of `Slicer-master` into `Slicer-411`.&lt;br /&gt;
&lt;br /&gt;
=== Build slicer extensions associated with Slicer trunk ===&lt;br /&gt;
&lt;br /&gt;
Considering the following assumption:&lt;br /&gt;
&lt;br /&gt;
# Slicer trunk has been checkout into `/path/to/Slicer-master` and built into `/path/to/Slicer-master-SuperBuild-Release`&lt;br /&gt;
&lt;br /&gt;
The associated extensions could be built doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git clone git://github.com/Slicer/ExtensionsIndex.git SlicerExtensionsIndex-master&lt;br /&gt;
$ mkdir SlicerExtensionsIndex-master-build&lt;br /&gt;
$ cd SlicerExtensionsIndex-master-build&lt;br /&gt;
$ cmake -DSlicer_DIR:PATH=/path/to/Slicer-master-SuperBuild-Release/Slicer-build \&lt;br /&gt;
 -DSlicer_EXTENSION_DESCRIPTION_DIR:PATH=/path/to/SlicerExtensionsIndex-master \&lt;br /&gt;
 -DCMAKE_BUILD_TYPE:STRING=Release \&lt;br /&gt;
 /path/to/Slicer-master/Extensions/CMake&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build slicer extensions associated with Slicer {{Documentation/currentversion}} ===&lt;br /&gt;
&lt;br /&gt;
Considering the following assumption:&lt;br /&gt;
&lt;br /&gt;
# Slicer trunk has been checkout into `/path/to/Slicer-{{Documentation/currentversion}}` and built into `/path/to/Slicer-{{Documentation/currentversion}}-SuperBuild-Release`&lt;br /&gt;
&lt;br /&gt;
The associated extensions could be built doing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git clone git://github.com/Slicer/ExtensionsIndex.git -b 4.3 SlicerExtensionsIndex-4.3&lt;br /&gt;
$ mkdir SlicerExtensionsIndex-4.3-build&lt;br /&gt;
$ cd SlicerExtensionsIndex-4.3-build&lt;br /&gt;
$ cmake -DSlicer_DIR:PATH=/path/to/Slicer-4.3-SuperBuild-Release/Slicer-build \&lt;br /&gt;
 -DSlicer_EXTENSION_DESCRIPTION_DIR:PATH=/path/to/SlicerExtensionsIndex-4.3 \&lt;br /&gt;
 -DCMAKE_BUILD_TYPE:STRING=Release \&lt;br /&gt;
 /path/to/Slicer-4.3/Extensions/CMake&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dashboard driven build ==&lt;br /&gt;
&lt;br /&gt;
Continuous and nightly extension dashboards are setup on the slicer factory machine maintained by [http://www.kitware.com Kitware] folks.&lt;br /&gt;
&lt;br /&gt;
Assuming you install your own [[Documentation/{{documentation/version}}/Developers/Extensions/Server|extensions server]], you could also distribute  your own set of extensions.&lt;br /&gt;
&lt;br /&gt;
Remarks:&lt;br /&gt;
&lt;br /&gt;
* Setting both nightly and continuous builds of the extensions is a key component of the Slicer continuous integration process.&lt;br /&gt;
&lt;br /&gt;
* By customizing the [https://github.com/Slicer/Slicer/blob/master/Extensions/CMake/SlicerExtensionsDashboardScript.TEMPLATE.cmake extension template dashboard script], it is possible to easily setup dashboard client submitting to [http://slicer.cdash.org/index.php?project=Slicer4 CDash]. See example dashboard scripts that are used on official Slicer build machines [https://github.com/Slicer/DashboardScripts here] (note that these scripts are more complex than the template to allow code reuse between different configurations, but they are tested regularly and so guaranteed to work).&lt;br /&gt;
&lt;br /&gt;
* The images reported below illustrate the dashboard submissions associated with the continuous and nightly builds of Slicer extensions associated to both Slicer trunk and Slicer 4.1.1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=600px perrow=2&amp;gt;&lt;br /&gt;
File:Slicer-411-Extensions-build-system-nightly.png|Extensions-Nightly Slicer 4.1.1&lt;br /&gt;
File:Slicer-411-Extensions-build-system-continuous.png|Extensions-Continuous Slicer 4.1.1&lt;br /&gt;
File:Slicer-Extensions-build-system-nightly.png|Extensions-Nightly Slicer trunk&lt;br /&gt;
File:Slicer-Extensions-build-system-continuous.png|Extensions-Continuous Slicer trunk&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
### Dashboard submissions&lt;br /&gt;
&lt;br /&gt;
Submission of experimental builds are welcome. See [manual build](#manual-build) instructions.&lt;br /&gt;
&lt;br /&gt;
Submission of either continuous or nightly builds of extensions on Slicer [CDash][] &lt;br /&gt;
should be done solely by the slicer factory machine maintained by Kitware folks. &lt;br /&gt;
While nothing prevent such submission from happening, it won't be possible to upload extensions&lt;br /&gt;
on the [extensions server][] without the appropriate credentials.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>