<?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.8%2FDevelopers%2FBuild_system%2FRemote_Module</id>
	<title>Documentation/4.8/Developers/Build system/Remote Module - 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.8%2FDevelopers%2FBuild_system%2FRemote_Module"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.8/Developers/Build_system/Remote_Module&amp;action=history"/>
	<updated>2026-04-09T20:39: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.8/Developers/Build_system/Remote_Module&amp;diff=55218&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.8</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.8/Developers/Build_system/Remote_Module&amp;diff=55218&amp;oldid=prev"/>
		<updated>2017-10-18T07:01:44Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.8&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Purpose of Remote Modules =&lt;br /&gt;
&lt;br /&gt;
Keep the Slicer core lean.&lt;br /&gt;
&lt;br /&gt;
Allow individuals or organizations to work on their own private modules and optionally make these modules available to the Slicer users without the need to use the extensions manager.&lt;br /&gt;
&lt;br /&gt;
= Policy for Adding Remote Modules =&lt;br /&gt;
&lt;br /&gt;
Module is known to compile on Linux, MacOSX and Windows.&lt;br /&gt;
&lt;br /&gt;
Module is tested.&lt;br /&gt;
&lt;br /&gt;
Module is documented on the wiki.&lt;br /&gt;
&lt;br /&gt;
Module names must be unique.&lt;br /&gt;
&lt;br /&gt;
At no time in the future should a module in the main Slicer repository depend on Remote module.&lt;br /&gt;
&lt;br /&gt;
Remote modules MUST define a specific '''unique''' revision (git hash or svn revision).  It is important for debugging and scientific reproducibility that there be a unique set of code associated with each slicer revision.&lt;br /&gt;
&lt;br /&gt;
= Procedure for Adding a Remote Module =&lt;br /&gt;
&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;
&lt;br /&gt;
&amp;lt;li&amp;gt;Discuss with Slicer core Developers&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Add an entry into &amp;lt;code&amp;gt;SuperBuild.cmake&amp;lt;/code&amp;gt; using [https://github.com/Slicer/Slicer/blob/master/CMake/ExternalProjectAddSource.cmake#L33-45 Slicer_Remote_Add()] macro. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Slicer_Remote_Add(Foo&lt;br /&gt;
  GIT_REPOSITORY ${git_protocol}://github.com/john/foo&lt;br /&gt;
  GIT_TAG abcdef&lt;br /&gt;
  OPTION_NAME Slicer_BUILD_Foo&lt;br /&gt;
  LABELS REMOTE_MODULE&lt;br /&gt;
  )&lt;br /&gt;
list_conditional_append(Slicer_BUILD_Foo Slicer_REMOTE_DEPENDENCIES Foo)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Corresponding commit message should be similar to:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENH: Add Foo remote module&lt;br /&gt;
&lt;br /&gt;
The Foo module provide the user with ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;As a side effect of calling &amp;lt;code&amp;gt;Slicer_Remote_Add&amp;lt;/code&amp;gt;, the option &amp;lt;code&amp;gt;Slicer_BUILD_Foo&amp;lt;/code&amp;gt; will automatically be added as an advanced option and (2) the CMake variables &amp;lt;code&amp;gt;Slicer_BUILD_Foo&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Foo_SOURCE_DIR&amp;lt;/code&amp;gt; will be passed to Slicer inner build.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Additionally, by specifying the &amp;lt;code&amp;gt;REMOTE_MODULE&amp;lt;/code&amp;gt; label, within &amp;lt;code&amp;gt;Slicer/Modules/Remote/CMakeLists.txt&amp;lt;/code&amp;gt;, the corresponding source directory will automatically be added using a call to &amp;lt;code&amp;gt;add_directory&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' &amp;lt;code&amp;gt;Slicer_Remote_Add&amp;lt;/code&amp;gt; creates an in-source module target within &amp;lt;code&amp;gt;Slicer/Modules/Remote&amp;lt;/code&amp;gt;. The SuperBuild target for a remote module only runs the source update step; there is no separate build step.&lt;br /&gt;
&lt;br /&gt;
= Procedure for Updating a Remote Module =&lt;br /&gt;
&lt;br /&gt;
1. Update the entry into &amp;lt;code&amp;gt;SuperBuild.cmake&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Commit with a message similar to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENH: Update Foo remote module&lt;br /&gt;
&lt;br /&gt;
$ git shortlog abc123..efg456&lt;br /&gt;
John Doe (2):&lt;br /&gt;
  Add support for ZZZ spacing&lt;br /&gt;
  Refactor space handler to support multi-dimension&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>