Difference between revisions of "Documentation/Nightly/Developers/Build Instructions/Prerequisites"

From Slicer Wiki
Jump to: navigation, search
Tag: 2017 source edit
 
(137 intermediate revisions by 16 users not shown)
Line 3: Line 3:
  
 
== PREREQUISITES ==
 
== PREREQUISITES ==
 +
 +
<!-- For all systems be sure git-lfs is properly installed for use with VTKv9 (required for VTKm checkout) -->
 +
 +
As of early 2018, Slicer migrated to Qt5. Qt4 support was removed in version 4.11. See instructions at this labs page for the new requirements: https://www.slicer.org/wiki/Documentation/Labs/Qt5-and-VTK8
 +
 
<br>
 
<br>
 
<!--
 
<!--
 
Please check that the following tools are installed on your machine.
 
Please check that the following tools are installed on your machine.
 +
 +
We try to keep current with the most recent releases of these prerequisites, but sometimes it's critical to use the exact versions specified here.  If you run into issues please do whatever you can to find a combination that works or contact the developer mailing list for suggestions.
  
 
<br>
 
<br>
Line 37: Line 44:
 
<br>
 
<br>
 
-->
 
-->
Consider reading platform specific requirements listed below.
+
The prerequisites listed below are required to be able to configure/build/package/test Slicer.
  
 
=== Linux  ===
 
=== Linux  ===
* [{{tool|download|cmake}} CMake] >= 2.8.9
+
* [{{tool|download|cmake}} CMake] >= 3.13.4
 
* [{{tool|download|git}} Git] >= 1.7.10
 
* [{{tool|download|git}} Git] >= 1.7.10
 
* [{{tool|download|svn}} Svn] >= 1.7
 
* [{{tool|download|svn}} Svn] >= 1.7
* Qt 4.8.6. <small>See details [http://na-mic.org/Mantis/view.php?id=3325#bugnotes here] (Note that any version >= Qt 4.7.4 can be used only for Ubuntu < 12.04)</small>
+
* Qt 5.11: <b>tested and recommended</b>
 +
** To build Slicer: install Qt using the distribution package manager.
 +
** To package and redistribute Slicer: download and execute [https://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run qt-unified-linux-x64-online.run], install Qt, make sure to select <tt>qtscript</tt> and <tt>qtwebengine</tt> components.
 +
* GCC suite
 +
 
 +
==== Debian ====
  
==== Ubuntu / Debian ====
+
* Debian squeeze/wheezy/testing(jessie) users, start by pasting the following lines in a terminal
* Ubuntu, Debian squeeze/wheezy/testing(jessie) users, start by pasting the following lines in a terminal
 
 
  sudo apt-get install subversion git-core git-svn
 
  sudo apt-get install subversion git-core git-svn
  sudo apt-get install make gcc g++ libX11-dev libXt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev libfontconfig-dev libxrender-dev libncurses5-dev
+
  sudo apt-get install build-essential libx11-dev libxt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev libfontconfig-dev libxrender-dev libncurses5-dev
 
  sudo apt-get install cmake
 
  sudo apt-get install cmake
 
  sudo apt-get install qt-sdk
 
  sudo apt-get install qt-sdk
  
'''For Ubuntu 12.04, 12.10, 13.04, and 14.04''': You *MUST download and build the standard cmake* from http://cmake.org/ because the distributed version of cmake cannot be used to build slicer.
+
<hr>
  
<pre>
 
sudo apt-get install openssl libssl-dev
 
  
mkdir ~/Support && cd Support    # This is where we will download and install required software
+
==== Ubuntu ====
  
# By copying this one-liner in your terminal, it will download and build CMake
+
===== Common Prerequisites =====
cmake_package="cmake-2.8.11.2"; \
 
wget http://www.cmake.org/files/v2.8/$cmake_package.tar.gz -v -O $cmake_package.tar.gz && \
 
tar -xzvf $cmake_package.tar.gz; \
 
cd $cmake_package && \
 
cmake -DCMAKE_USE_OPENSSL:BOOL=ON && \
 
make -j4
 
  
# By copying this one-liner, symbolic links to cmake tools will be created in /usr/local/bin.
 
# That way calling cmake, ctest, ... from the command line will resolve to this version of CMake.
 
for tool in cmake ccmake ctest cpack; do sudo ln -s ~/Support/$cmake_package/bin/$tool /usr/local/bin/$tool; done
 
</pre>
 
  
'''For Ubuntu 12.04, 12.10, 13.04 and 13.10''': Qt >= 4.8.5 MUST be used. See reference below for more details.
+
sudo apt-get install subversion git-core git-svn
  
<pre>
+
  sudo apt-get install make gcc g++ libx11-dev libxt-dev libgl1-mesa-dev libglu1-mesa-dev libfontconfig-dev libxrender-dev libncurses5-dev libxkbcommon-x11-0
cd ~/Support  # This is where we will build Qt and dependent libraries
 
   
 
# Keep track of our working directory
 
cwd=$(pwd)
 
  
# This will download, then build zlib and openssl in the current folder
 
rm -f get-and-build-openssl-for-slicer.sh
 
wget https://gist.githubusercontent.com/jcfr/9513568/raw/21f4e4cabca5ad03435ecc17ab546dab5e2c1a2f/get-and-build-openssl-for-slicer.sh
 
chmod u+x get-and-build-openssl-for-slicer.sh
 
./get-and-build-openssl-for-slicer.sh
 
  
# This will download Qt source in the current folder
+
sudo apt-get install libosmesa6-dev  # Only for Ubuntu < 14.04.3
wget http://packages.kitware.com/download/item/6175/qt-everywhere-opensource-src-4.8.6.tar.gz
 
md5=`md5sum ./qt-everywhere-opensource-src-4.8.6.tar.gz | awk '{ print $1 }'` &&
 
[ $md5 == "2edbe4d6c2eff33ef91732602f3518eb" ] || echo "MD5 mismatch. Problem downloading Qt"
 
  
# This will configure and build Qt in RELEASE against the zlib and openssl previously built
+
{{remark|red|On Ubuntu 14.04.3 LTS, attempting to install <tt>libosmesa6-dev</tt> results in an error.<pre>
tar -xzvf qt-everywhere-opensource-src-4.8.6.tar.gz
+
The following packages have unmet dependencies:
mv qt-everywhere-opensource-src-4.8.6 qt-everywhere-opensource-release-src-4.8.6
+
libosmesa6-dev : Depends: libosmesa6 (= 10.1.3-0ubuntu0.4) but it is not going to be installed
mkdir qt-everywhere-opensource-release-build-4.8.6
+
E: Unable to correct problems, you have held broken packages.
cd qt-everywhere-opensource-release-src-4.8.6
 
./configure -prefix $cwd/qt-everywhere-opensource-release-build-4.8.6/    \
 
                  -release \
 
                  -opensource -confirm-license \
 
                  -no-qt3support \
 
                  -webkit \
 
                  -nomake examples -nomake demos \
 
                  -openssl -I $cwd/openssl-1.0.1e/include  -L $cwd/openssl-1.0.1e \
 
&& make -j7 && make install
 
 
</pre>
 
</pre>
 +
For more details, see [https://bugs.launchpad.net/ubuntu/+source/mesa-lts-utopic/+bug/1424059 Bug 1424059].}}
  
References:
+
{{remark|green|Slicer compiles successfully without that package, but <tt>VTK_OPENGL_HAS_OSMESA</tt> is disabled.}}
  
* Why cmake should be built from Source on Ubuntu 12.04 and above ?
+
* For Qt5.5 on Ubuntu 16.04
** http://slicer-devel.65872.n3.nabble.com/PYTHON-INCLUDE-DIR2-when-building-Slicer4-td4028557.html
+
sudo apt-get install libgstreamer-plugins-base0.10-dev
** Slicer issue [http://na-mic.org/Mantis/view.php?id=3103 #3103]
 
** Slicer issue  [http://na-mic.org/Mantis/view.php?id=3116#c8649 #3116]
 
** CMake issue [http://public.kitware.com/Bug/view.php?id=14156 #14156]
 
  
* Why Qt >= 4.8.5 should be used on Ubuntu 12.04 and above ?
+
===== CMake =====
** Slicer issue [http://www.na-mic.org/Bug/view.php?id=3325 #3325]
+
 
 +
<ol>
 +
<li>Open a terminal and copy the command reported below</li>
 +
<li>Download stable version of CMake and extract the archive:
 +
<pre>
 +
sudo apt-get install curl
 +
mkdir ~/Support && cd ~/Support
 +
curl -O https://cmake.org/files/v3.13/cmake-3.13.4-Linux-x86_64.tar.gz
 +
tar -xzvf cmake-3.13.4-Linux-x86_64.tar.gz
 +
</pre>
 +
</li>
 +
<li>Create symbolic links into <code>~/bin</code>
 +
<pre>
 +
mkdir -p ~/bin
 +
for name in cmake ctest cpack ccmake cmake-gui; do
 +
  ln -s ~/Support/cmake-3.13.4-Linux-x86_64/bin/$name ~/bin/$name
 +
done
 +
</pre>
 +
</li>
 +
</ol>
 +
 
 +
{{remark|red|You <b>MUST</b> download the standard CMake binary because the distributed version of CMake cannot be used to build slicer.<br>
 +
See [[Documentation/{{documentation/version}}/Developers/FAQ/Building#Why_distributed_CMake_can_not_be_used_on_Ubuntu_12.04_and_above_.3F|here]] for more details.}}
  
 
==== CentOS ====
 
==== CentOS ====
 +
 +
See instructions reported in [https://github.com/Slicer/SlicerBuildEnvironment/blob/master/Docker/qt5-centos7/Dockerfile qt5-centos7/Dockerfile]
 +
 +
<!--
 
*CentOS user type:
 
*CentOS user type:
  yum install make gcc-c++ libX11-devel libXt-devel libXext-devel libGLU-devel mesa-libOSMesa-devel mesa-libGL-devel mesa-libGLU-devel ncurses
+
  yum install make gcc-c++ libX11-devel libXt-devel libXrender-devel libXext-devel libGLU-devel mesa-libOSMesa-devel mesa-libGL-devel mesa-libGLU-devel ncurses
 +
-->
  
 
<!--
 
<!--
Line 127: Line 130:
  
 
=== MacOSX ===
 
=== MacOSX ===
 +
* XCode command line tools must be installed:
 +
  xcode-select --install
 +
* El Capitan is what most developers use.
 +
* CMake 3.12.2 is recommended. Check the minimum required CMake version [https://github.com/Slicer/Slicer/blob/master/CMakeLists.txt#L1 here]
 +
* Qt 5: <b>tested and recommended</b>.
 +
** For building Slicer: download and execute [https://download.qt.io/official_releases/online_installers/qt-unified-mac-x64-online.dmg qt-unified-mac-x64-online.dmg], install Qt 5.10, make sure to select <tt>qtscript</tt> and <tt>qtwebengine</tt> components.
 +
** For packaging and redistributing Slicer: build Qt using [https://github.com/jcfr/qt-easy-build#readme qt-easy-build]
  
'''MacOSX 10.9.4 (Maverick):'''
+
====MacOSX 10.9.4 (Mavericks)====
  
 
''' (1) Make sure to install this update: http://support.apple.com/kb/DL1754'''
 
''' (1) Make sure to install this update: http://support.apple.com/kb/DL1754'''
  
''' (2) Use CMake 3.0.1 - it is known to be working and is supported''' (if you want to use CMake already installed on your system, minimum version required is 2.8.9)
+
''' (2) Use CMake 3.12.2 - it is known to be working and is supported''' (if you want to use CMake already installed on your system, 2.8.12.2 is known to work on Mac OS X 10.9.5)
  
 
* Mac Os X >= 10.5 (Leopard)
 
* Mac Os X >= 10.5 (Leopard)
Line 153: Line 163:
 
-->
 
-->
 
* XCode (for the SDK libs)
 
* XCode (for the SDK libs)
* Qt >= 4.8.5. We recommend you install the following two packages:
+
** After installing XCode, install XCode command line developer tools:
 +
<pre>
 +
xcode-select --install
 +
</pre>
 +
* XQuartz - For Mac Os X >= 10.8 ([http://en.wikipedia.org/wiki/OS_X_Mountain_Lion Mountain Lion]) install XQuartz (http://xquartz.macosforge.org) to get X11 (no longer a default in OS X).
 +
* Qt 4 >= 4.8.5. We recommend you install the following two packages:
 
** Download and install [http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-opensource-mac-4.8.6-1.dmg qt-opensource-mac-4.8.6-1.dmg]
 
** Download and install [http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-opensource-mac-4.8.6-1.dmg qt-opensource-mac-4.8.6-1.dmg]
 
** Download and install [http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-opensource-mac-4.8.6-1-debug-libs.dmg qt-opensource-mac-4.8.6-1-debug-libs.dmg]
 
** Download and install [http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-opensource-mac-4.8.6-1-debug-libs.dmg qt-opensource-mac-4.8.6-1-debug-libs.dmg]
 
** For more details [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt#Mac|here]]
 
** For more details [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt#Mac|here]]
* XQuartz - For Mac Os X >= 10.8 ([http://en.wikipedia.org/wiki/OS_X_Mountain_Lion Mountain Lion]) install XQuartz (http://xquartz.macosforge.org) to get X11 (no longer a default in OS X).
 
 
<!--
 
<!--
 
** Newer Xcode versions (e.g. 4.3.2) use clang as the default compiler and '''clang is not compatible with ITK version 3'''.  You should use ITK version 4 with recent versions of Xcode.
 
** Newer Xcode versions (e.g. 4.3.2) use clang as the default compiler and '''clang is not compatible with ITK version 3'''.  You should use ITK version 4 with recent versions of Xcode.
Line 163: Line 177:
 
** OS X Mountain Lion: In Xcode 4.5 you now need to install command line tools (no longer included by default). Install within Xcode under the Xcode->Preferences->Downloads tab (otherwise git svn will give errors). Then you will need to install XQuartz (http://xquartz.macosforge.org) to get X11 (no longer a default in OS X).
 
** OS X Mountain Lion: In Xcode 4.5 you now need to install command line tools (no longer included by default). Install within Xcode under the Xcode->Preferences->Downloads tab (otherwise git svn will give errors). Then you will need to install XQuartz (http://xquartz.macosforge.org) to get X11 (no longer a default in OS X).
 
-->
 
-->
 +
 +
====Mac OSX 10.11 (El Capitan)====
 +
 +
XCode up to version 7 is known to work for Slicer compilation. XCode 8 breaks things on several levels for now.
 +
Remember to install XCode command line tools (see above) if a reinstall for XCode is needed.
 +
 +
The standard Qt4 installers fail on this version and the 4.8.6 source code won't build.  But [http://slicer-devel.65872.n3.nabble.com/incompatible-qt-4-8-6-with-OS-X-El-Capitan-td4035551.html as described on the slicer-devel mailing list] it is possible to install the [https://github.com/Homebrew/formula-patches/blob/master/qt/el-capitan.patch homebrew version of qt4 which patches it to work on El Capitan] (see below).
 +
 +
* Install the '''OS''', '''Xcode''', and '''XQuartz''' (see MacOSX 10.10 above)
 +
* Install '''Qt4''' by running the following two commands:
 +
<pre>
 +
brew install qt4
 +
xcode-select --install
 +
</pre>
 +
* TCL does not build correctly on El Capitan as of 2015-12-03, so when building Slicer turn `Slicer_USE_PYTHONQT_WITH_TCL` off.
 +
 +
==== Mac OSX 10.12 (Sierra) ====
 +
 +
Similar to 10.11 (El Capitan), there are new issues with Qt4 (caused by Phonon).
 +
The GitHub user Cartr [https://github.com/Homebrew/homebrew-core/pull/5216 offered a patch to the brew team], and even though it was not integrated (the homebrew team decided to stop patching their recipe to encourage people to use Qt5), he [https://github.com/cartr/homebrew-qt4 turned his formula into a tap] that can be installed (see below).
 +
 +
Follow instructions for 10.11 ''(Installing Xcode, XQuartz, run without TCL)'' but install '''Qt4''' like shown below instead:
 +
<pre>
 +
brew install cartr/qt4/qt
 +
xcode-select --install
 +
</pre>
 +
 +
Confirmed with Xcode:
 +
* Version 8.1 (8B62) and cmake version 3.4.20151021-g8fbc8e
 +
* Version 8.3.3 and cmake 3.5.2
 +
<!--
 +
DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF ../Slicer
 +
make -j `sysctl -n hw.ncpu`
 +
-->
 +
 +
 +
==== Mac OSX 10.14 (Mojave) ====
 +
 +
<small>Associated discussion topic is https://discourse.slicer.org/t/building-on-mac-10-14-mojave/4554/21</small>
 +
 +
* Install Qt 5.11.2 using [http://download.qt.io/official_releases/online_installers/qt-unified-mac-x64-online.dmg Qt Online Installer for macOS]
 +
 +
* Install XCode:
 +
 +
<pre>
 +
xcode-select --install
 +
</pre>
 +
 +
 +
* Build qt from homebrew
 +
<pre>
 +
brew install qt
 +
ccmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 -DQt5_DIR=/usr/local//Cellar/qt/5.13.2/lib/cmake/Qt5 ~/slicer/latest/Slicer
 +
 +
</pre>
 +
 +
* Explicitly set the SDK when running make
 +
<pre>
 +
SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk make -j20
 +
</pre>
  
 
=== Windows ===
 
=== Windows ===
* [{{tool|download|cmake}} CMake] >= 2.8.10
+
 
 +
==== Common Prerequisites ====
 +
* [{{tool|download|cmake}} CMake] >= 3.13.4
 
* [{{tool|download|git}} Git] >= 1.7.10
 
* [{{tool|download|git}} Git] >= 1.7.10
 
<!--
 
<!--
*[[{{tool|logo|cmake}}|x16px]]  [{{tool|download|cmake}}  CMake] >= 2.8.10
+
*[[{{tool|logo|cmake}}|x16px]]  [{{tool|download|cmake}}  CMake] >= 3.13.4
 
*[[{{tool|logo|git}}|x16px]]  [{{tool|download|git}}  Git] >= 1.7.10
 
*[[{{tool|logo|git}}|x16px]]  [{{tool|download|git}}  Git] >= 1.7.10
 
* [https://code.google.com/p/msysgit/downloads/list?can=3 ''Git-X.X.X-preview2013XXXX.exe''] recommended.
 
* [https://code.google.com/p/msysgit/downloads/list?can=3 ''Git-X.X.X-preview2013XXXX.exe''] recommended.
Line 175: Line 251:
 
** Use of [http://code.google.com/p/tortoisegit/ TortoiseGit] is optional.
 
** Use of [http://code.google.com/p/tortoisegit/ TortoiseGit] is optional.
 
-->
 
-->
** {{note}}For convenience, you could update the PATH variable so that ''git'' can be automatically discovered when configuring Slicer. If not, you will have to specify the GIT_EXECUTABLE at configure time.
+
** {{note}}CMake must be able to find ''git.exe'' and ''patch.exe''. If git is installed in the default location then they may be found there, but if they are not found then either add the folder that contains them to PATH environment variable; or set GIT_EXECUTABLE and Patch_EXECUTABLE as environment variables or as CMake variables at configure time.
 +
 
 +
* Subversion (SVN) client: any SVN client that has command line tools
 +
** [http://www.sliksvn.com/en/download SlikSvn] <!-- or [http://www.cygwin.com cygwin's svn client]-->, or
 +
** [https://tortoisesvn.net/downloads.html TortoiseSVN] - make sure you install ''Command line client tools'' component (disabled by default)
 +
 
 +
* NSIS (optional): Needed if packaging Slicer - Click [http://nsis.sourceforge.net/Download here] to download. Make sure you install the language packs.
  
* [http://www.sliksvn.com/en/download SlikSvn] <!-- or [http://www.cygwin.com cygwin's svn client]-->. If using TortoiseSVN (versions that support command line tools), make sure you install Command line tools (disabled by default)
+
* Qt5: Download download Qt 5.10.0 installer from [https://download.qt.io/archive/qt/5.10/5.10.0 here] and install Qt along with <tt>qtscript</tt> and <tt>qtwebengine</tt> components (5.10.x version is not available in the [https://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe unified installer]). For building with VS2015, Qt version 5.10.x or older is required (newer versions do not compile with VS2015 due to QWebEngine minimum requirement is VS2017). For more details, read [[Documentation/Nightly/Developers/Build Instructions/Prerequisites/Qt5|step-by-step]] guide.
  
* NSIS (optional): Needed if packaging Slicer - Click [http://nsis.sourceforge.net/Download here] to download.
+
==== Tested and recommended build environment ====
  
* Qt 4.8.6 (for VS2008). See details [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt#Windows|here]]
+
* VS2015 (Visual Studio 14 2015 Win64)
** Normally you should plan to build Qt from source to have complete control over the process. See [https://github.com/jcfr/qt-easy-build one-liner build command] <!-- or more detailed [[#Build_instructions]] -->
+
** Make sure you enable installation of component ''Programming languages / Visual C++ / Common Tools for Visual C++ 2015'' (in some distributions, this option is not enabled by default)
** You may find that the '''unsigned''' binary downloads from this site are usable: http://sourceforge.net/projects/qtx64/files/qt-x64/4.8.6/msvc2008/ (If you use .7z varaints extract them in the default location C:\Qt\ otherwise that installation will not be properly configured for use with CMake)
+
** Installation of [https://msdn.microsoft.com/en-us/library/mt752379.aspx Cumulative Servicing Release for Microsoft Visual Studio 2015 Update 3 (KB3165756)] is required on some older VS2015 distributions
** '''Details''': Using the Qt Designer on Windows requires that the Slicer plugins are compiled in the same mode as Qt. If Qt was compiled in Release mode (default), Slicer would have to be compiled in Release mode as well. However if Qt is compiled in Debug mode only, Slicer has to be compiled in Debug too. When Qt is in "Release and Debug" mode only the Release version of Designer.exe is generated, Slicer would have to be compiled in Release. So for developers, the <b>Debug mode is recommended</b>.
+
* Qt 5.10
 +
* CMake >= 3.13.4
  
* IDE
+
==== Experimental/deprecated build environments ====
** '''Tested/Recommended''': [https://www.microsoft.com/visualstudio/en-us/products/2008-editions Microsoft Visual Studio 9 2008] (Any edition). [http://go.microsoft.com/?linkid=7729279 VS Express 2008 with SP1 direct link] (functional as of Jan 11, 2014)
+
* [https://visualstudio.microsoft.com/vs/community/ Visual Studio 2017 or 2019 (Community or any other edition)] with VS2015 build tools (tested, works well)
*** Make sure to install:
+
** When configuring Visual Studio installer, enable installation of component ''VC++ 2015.3 v14.00 (v140) toolset for desktop''
**** SP1. Click [http://www.microsoft.com/download/en/details.aspx?id=10986 here] to download SP1 and click [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2012/008206.html here] to understand the motivation.
+
** Visual Studio 2015 toolset must be set in CMake: ''Optional toolset to use (argument to -T)'' need to be set to ''v140''
** '''Experimental''': The plan is to support [https://www.microsoft.com/visualstudio/en-us/products/2010-editions Microsoft Visual Studio 2010] (Any edition). {{note}} NOTE THAT EXPERIMENTAL MEANS THIS DOESN'T YET WORK :)
+
* Cygwin (untested, probably does not work)
*** Make sure to build or install:
+
** Cygwin suite (building with cygwin gcc not supported, but the cygwin shell environment can be used to run git, svn, etc).
**** Qt 4.8
 
*** Make sure to install:
 
**** SP1. Click [http://www.microsoft.com/download/en/details.aspx?id=23691 here] to download SP1 and click [http://developer.qt.nokia.com/faq/answer/why_do_all_qt_4.7_applications_crash_when_using_windows_7_x64_w_vs_2010 here] to understand the motivation.
 
**** SP1 Compiler update. Click [https://www.microsoft.com/download/en/details.aspx?id=4422 here] to download and [http://slicer-devel.65872.n3.nabble.com/Windows-7-64Bits-Slicer-4-Build-with-VC-2010-problem-tt3730524.html#a3731661 here] to understand the motivation.
 
<!-- JC: This links shouldn't be here: 1) Since this the developer section, it's assumed Visual Studio is installed. 2) The Dll are distributed within Slicer package -->
 
<!-- *** Optional: "Microsoft Visual C++ 2010 SP1 Redistributable Package". Click [http://www.microsoft.com/download/en/details.aspx?id=13523 here for x64] download, or [http://www.microsoft.com/download/en/details.aspx?id=13523 here for x86] download.  [http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=29 x86 (32bit) for VS 2008] -->
 
** '''Experimental''' (Visual Studio 2012): Use a desktop version such as [http://www.microsoft.com/visualstudio/eng/downloads#d-express-windows-desktop Visual Studio 2012 Express <b>for Windows Desktop</b>] and remember [http://www.microsoft.com/en-us/download/details.aspx?id=38188 Visual Studio 2012 Update 2]). Do <b>not</b> use Visual Studio Express 2012 <em>for Windows 8</em>. You must install [http://msdn.microsoft.com/en-us/library/ms717422.aspx Windows SDK], otherwise CMake will not even find the C compiler during configure. In CMake, choose <tt>Visual Studio 11 Win64</tt> as generator.
 
** '''Experimental''' (Visual Studio 2013 with Update 4): Slicer compilation was successful in Debug mode after disabling numpy, SimpleITK, and EMSegment modules in CMake. VS will not open using the regular command "Slicer.exe --VisualStudio". To open the debugging environment, start a new command prompt by typing "Slicer.exe --cmd". And just type your solution name in this new command prompt. That will open the VS 2013 GUI, and you can start Slicer for debugging. (Tested with Slicer 4.4 tag version.)
 
** '''Un-tested''': Cygwin suite (building with cygwin gcc not supported, but the cygwin shell environment can be used to run git, svn, etc).
 

Latest revision as of 10:46, 2 December 2019

Home < Documentation < Nightly < Developers < Build Instructions < Prerequisites


PREREQUISITES

As of early 2018, Slicer migrated to Qt5. Qt4 support was removed in version 4.11. See instructions at this labs page for the new requirements: https://www.slicer.org/wiki/Documentation/Labs/Qt5-and-VTK8


The prerequisites listed below are required to be able to configure/build/package/test Slicer.

Linux

  • CMake >= 3.13.4
  • Git >= 1.7.10
  • Svn >= 1.7
  • Qt 5.11: tested and recommended
    • To build Slicer: install Qt using the distribution package manager.
    • To package and redistribute Slicer: download and execute qt-unified-linux-x64-online.run, install Qt, make sure to select qtscript and qtwebengine components.
  • GCC suite

Debian

  • Debian squeeze/wheezy/testing(jessie) users, start by pasting the following lines in a terminal
sudo apt-get install subversion git-core git-svn
sudo apt-get install build-essential libx11-dev libxt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev libfontconfig-dev libxrender-dev libncurses5-dev
sudo apt-get install cmake
sudo apt-get install qt-sdk


Ubuntu

Common Prerequisites
sudo apt-get install subversion git-core git-svn
sudo apt-get install make gcc g++ libx11-dev libxt-dev libgl1-mesa-dev libglu1-mesa-dev libfontconfig-dev libxrender-dev libncurses5-dev libxkbcommon-x11-0


sudo apt-get install libosmesa6-dev  # Only for Ubuntu < 14.04.3
  1. On Ubuntu 14.04.3 LTS, attempting to install libosmesa6-dev results in an error.
    The following packages have unmet dependencies:
     libosmesa6-dev : Depends: libosmesa6 (= 10.1.3-0ubuntu0.4) but it is not going to be installed
     E: Unable to correct problems, you have held broken packages.
    

    For more details, see Bug 1424059.

  1. Slicer compiles successfully without that package, but VTK_OPENGL_HAS_OSMESA is disabled.
  • For Qt5.5 on Ubuntu 16.04
sudo apt-get install libgstreamer-plugins-base0.10-dev
CMake
  1. Open a terminal and copy the command reported below
  2. Download stable version of CMake and extract the archive:
    sudo apt-get install curl
    mkdir ~/Support && cd ~/Support
    curl -O https://cmake.org/files/v3.13/cmake-3.13.4-Linux-x86_64.tar.gz
    tar -xzvf cmake-3.13.4-Linux-x86_64.tar.gz
    
  3. Create symbolic links into ~/bin
    mkdir -p ~/bin
    for name in cmake ctest cpack ccmake cmake-gui; do
      ln -s ~/Support/cmake-3.13.4-Linux-x86_64/bin/$name ~/bin/$name
    done
    
  1. You MUST download the standard CMake binary because the distributed version of CMake cannot be used to build slicer.
    See here for more details.

CentOS

See instructions reported in qt5-centos7/Dockerfile


MacOSX

  • XCode command line tools must be installed:
 xcode-select --install
  • El Capitan is what most developers use.
  • CMake 3.12.2 is recommended. Check the minimum required CMake version here
  • Qt 5: tested and recommended.
    • For building Slicer: download and execute qt-unified-mac-x64-online.dmg, install Qt 5.10, make sure to select qtscript and qtwebengine components.
    • For packaging and redistributing Slicer: build Qt using qt-easy-build

MacOSX 10.9.4 (Mavericks)

(1) Make sure to install this update: http://support.apple.com/kb/DL1754

(2) Use CMake 3.12.2 - it is known to be working and is supported (if you want to use CMake already installed on your system, 2.8.12.2 is known to work on Mac OS X 10.9.5)

$ curl -O http://www.cmake.org/files/v2.8/cmake-2.8.11-Darwin64-universal.tar.gz
$ tar -xzvf cmake-2.8.11-Darwin64-universal.tar.gz --strip-components=1
$ CMake\ 2.8-11.app/Contents/bin/cmake --version
cmake version 2.8.11
  • Git >= 1.7.10
  • Svn >= 1.7
  • XCode (for the SDK libs)
    • After installing XCode, install XCode command line developer tools:
xcode-select --install

Mac OSX 10.11 (El Capitan)

XCode up to version 7 is known to work for Slicer compilation. XCode 8 breaks things on several levels for now. Remember to install XCode command line tools (see above) if a reinstall for XCode is needed.

The standard Qt4 installers fail on this version and the 4.8.6 source code won't build. But as described on the slicer-devel mailing list it is possible to install the homebrew version of qt4 which patches it to work on El Capitan (see below).

  • Install the OS, Xcode, and XQuartz (see MacOSX 10.10 above)
  • Install Qt4 by running the following two commands:
brew install qt4
xcode-select --install
  • TCL does not build correctly on El Capitan as of 2015-12-03, so when building Slicer turn `Slicer_USE_PYTHONQT_WITH_TCL` off.

Mac OSX 10.12 (Sierra)

Similar to 10.11 (El Capitan), there are new issues with Qt4 (caused by Phonon). The GitHub user Cartr offered a patch to the brew team, and even though it was not integrated (the homebrew team decided to stop patching their recipe to encourage people to use Qt5), he turned his formula into a tap that can be installed (see below).

Follow instructions for 10.11 (Installing Xcode, XQuartz, run without TCL) but install Qt4 like shown below instead:

brew install cartr/qt4/qt
xcode-select --install

Confirmed with Xcode:

  • Version 8.1 (8B62) and cmake version 3.4.20151021-g8fbc8e
  • Version 8.3.3 and cmake 3.5.2


Mac OSX 10.14 (Mojave)

Associated discussion topic is https://discourse.slicer.org/t/building-on-mac-10-14-mojave/4554/21

  • Install XCode:
xcode-select --install


  • Build qt from homebrew
brew install qt
ccmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 -DQt5_DIR=/usr/local//Cellar/qt/5.13.2/lib/cmake/Qt5 ~/slicer/latest/Slicer

  • Explicitly set the SDK when running make
SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk make -j20

Windows

Common Prerequisites

  • CMake >= 3.13.4
  • Git >= 1.7.10
    • Note CMake must be able to find git.exe and patch.exe. If git is installed in the default location then they may be found there, but if they are not found then either add the folder that contains them to PATH environment variable; or set GIT_EXECUTABLE and Patch_EXECUTABLE as environment variables or as CMake variables at configure time.
  • Subversion (SVN) client: any SVN client that has command line tools
    • SlikSvn , or
    • TortoiseSVN - make sure you install Command line client tools component (disabled by default)
  • NSIS (optional): Needed if packaging Slicer - Click here to download. Make sure you install the language packs.
  • Qt5: Download download Qt 5.10.0 installer from here and install Qt along with qtscript and qtwebengine components (5.10.x version is not available in the unified installer). For building with VS2015, Qt version 5.10.x or older is required (newer versions do not compile with VS2015 due to QWebEngine minimum requirement is VS2017). For more details, read step-by-step guide.

Tested and recommended build environment

Experimental/deprecated build environments

  • Visual Studio 2017 or 2019 (Community or any other edition) with VS2015 build tools (tested, works well)
    • When configuring Visual Studio installer, enable installation of component VC++ 2015.3 v14.00 (v140) toolset for desktop
    • Visual Studio 2015 toolset must be set in CMake: Optional toolset to use (argument to -T) need to be set to v140
  • Cygwin (untested, probably does not work)
    • Cygwin suite (building with cygwin gcc not supported, but the cygwin shell environment can be used to run git, svn, etc).