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

From Slicer Wiki
Jump to: navigation, search
(moved to readthedocs)
Tags: 2017 source edit, Replaced
 
(35 intermediate revisions by 7 users not shown)
Line 1: Line 1:
<noinclude>{{documentation/versioncheck}}</noinclude>
+
{{documentation/banner
__TOC__
+
| text  = [https://slicer.readthedocs.io/en/latest/developer_guide/build_instructions/index.html This page has been moved to read-the-docs.]
 
+
| background-color = 8FBC8F }}
== 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. See instructions at this labs page for the new requirements: https://www.slicer.org/wiki/Documentation/Labs/Qt5-and-VTK8
 
 
 
<br>
 
<!--
 
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>
 
{{mbox
 
| type = protection
 
| text = Qt libraries are '''required'''. Consider reading [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt|Qt requirements]].
 
| image= [[{{tool|logo|qt}}|x40px]]
 
}}
 
<br>
 
 
 
{{mbox
 
| type = protection
 
| text = CMake is '''required'''.
 
| image= [[{{tool|logo|cmake}}|x40px]]
 
}}
 
<br>
 
 
 
{{mbox
 
| type = protection
 
| text = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Git is '''required'''.
 
| image= [[{{tool|logo|git}}|x40px]]
 
}}
 
<br>
 
 
 
{{mbox
 
| type = protection
 
| text = SVN is '''required'''.
 
| image= [[{{tool|logo|svn}}|x40px]]
 
}}
 
 
 
<br>
 
-->
 
The prerequisites listed below are required to be able to configure/build/package/test Slicer.
 
 
 
=== Linux ===
 
* [{{tool|download|cmake}} CMake] >= 3.7-rc02
 
* [{{tool|download|git}} Git] >= 1.7.10
 
* [{{tool|download|svn}} Svn] >= 1.7
 
* 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.
 
* Qt 4.8.7. <small>See details [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt#Linux|here]]. See some history [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>
 
* 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
 
 
 
<hr>
 
 
 
 
 
==== 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
 
 
 
sudo apt-get install libosmesa6-dev  # Only for Ubuntu < 14.04.3
 
 
 
{{remark|red|On Ubuntu 14.04.3 LTS, attempting to install <tt>libosmesa6-dev</tt> results in an error.<pre>
 
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.
 
</pre>
 
For more details, see [https://bugs.launchpad.net/ubuntu/+source/mesa-lts-utopic/+bug/1424059 Bug 1424059].}}
 
 
 
{{remark|green|Slicer compiles successfully without that package, but <tt>VTK_OPENGL_HAS_OSMESA</tt> is disabled.}}
 
 
 
* For Qt5.5 on Ubuntu 16.04
 
sudo apt-get install libgstreamer-plugins-base0.10-dev
 
 
 
===== CMake =====
 
 
 
<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.8/cmake-3.8.2-Linux-x86_64.tar.gz
 
tar -xzvf cmake-3.8.2-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.8.2-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.}}
 
 
 
===== Qt 4 (deprecated)=====
 
 
 
'''Ubuntu 14.04 and above''': Qt 4 == 4.8.7 MUST be used.
 
 
 
See https://github.com/jcfr/qt-easy-build
 
 
 
or on ubuntu 16.04 and 16.10, you can also install qt4.8.7 with:
 
 
 
sudo apt-get install qt4-dev-tools libqt4-dev libqt4-core libqt4-gui libqtwebkit-dev
 
 
 
or if that fails (due to libqt4-core and libqt4-gui packages not found):
 
 
 
sudo apt-get install qt4-dev-tools libqt4-dev libqtcore4 libqtgui4 libqtwebkit-dev
 
 
 
'''Ubuntu 12.04, 12.10, 13.04 and 13.10''': Qt 4 >= 4.8.5 MUST be used.
 
 
 
<pre>
 
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/004d4af8829c95690da2af51eaa3f0c64b7c4e02/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
 
wget http://packages.kitware.com/download/item/6175/qt-everywhere-opensource-src-4.8.6.tar.gz
 
echo "2edbe4d6c2eff33ef91732602f3518eb  qt-everywhere-opensource-src-4.8.6.tar.gz" > qt-everywhere-opensource-src-4.8.6.tar.gz.md5
 
md5sum -c qt-everywhere-opensource-src-4.8.6.tar.gz.md5
 
 
 
# This will configure and build Qt in RELEASE against the zlib and openssl previously built
 
tar -xzvf qt-everywhere-opensource-src-4.8.6.tar.gz
 
mv qt-everywhere-opensource-src-4.8.6 qt-everywhere-opensource-release-src-4.8.6
 
mkdir qt-everywhere-opensource-release-build-4.8.6
 
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>
 
 
 
For more details, consider reading the FAQ entry: [[Documentation/{{documentation/version}}/Developers/FAQ/Building#Why_Qt_4_.3E.3D_4.8.5_should_be_used_on_Ubuntu_12.04_and_above_.3F|Why Qt 4 >= 4.8.5 should be used on Ubuntu 12.04 and above ?]]
 
 
 
<hr>
 
 
 
==== CentOS ====
 
 
 
See instructions reported in [https://github.com/Slicer/SlicerBuildEnvironment/blob/master/Docker/qt5-centos7/Dockerfile qt5-centos7/Dockerfile]
 
 
 
<!--
 
*CentOS user type:
 
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
 
-->
 
 
 
<!--
 
Todo: This will have to be added in FAQ: Troubleshoot section
 
''glx-utils'' provides ''glxgears'' that can be used to test rendering
 
-->
 
 
 
=== 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 (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)
 
 
 
* Mac Os X >= 10.5 (Leopard)
 
* [{{tool|download|cmake}} CMake] >= 2.8.9
 
** For Mac Os X >= 10.8 ([http://en.wikipedia.org/wiki/OS_X_Mountain_Lion Mountain Lion]) and/or recent XCode >= 4.5.X - [{{tool|download|cmake}} CMake] >= 2.8.11 is required. See http://www.cmake.org/files/v2.8/cmake-2.8.11-Darwin64-universal.tar.gz
 
<!-- Waiting for the official release, get the release candidate rc1 [http://www.cmake.org/files/v2.8/cmake-2.8.11-rc1-Darwin64-universal.tar.gz here]. For explanation, see [[Documentation/{{documentation/version}}/Developers/Build_Instructions#ld:_framework_not_found_QtWebKit|here]] and [[Documentation/{{documentation/version}}/Developers/Build_Instructions#On_MacOSX_10.8.2C_CMake_hangs_forever|here]]. These versions are also known to work: exact version 20130121-g92bd8 [http://www.cmake.org/files/dev/cmake-2.8.10.20130121-g92bd8-Darwin-universal.tar.gz here] (or version >= 2.8.10.20130220 [http://www.cmake.org/files/dev/?C=M;O=D here]).
 
-->
 
 
$ 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
 
 
 
* [{{tool|download|git}} Git] >= 1.7.10
 
* [{{tool|download|svn}} Svn] >= 1.7
 
<!--
 
*[[{{tool|logo|cmake}}|x16px]] [{{tool|download|cmake}} CMake] >= 2.8.9
 
*[[{{tool|logo|git}}|x16px]] [{{tool|download|git}} Git] >= 1.6.5
 
-->
 
* XCode (for the SDK libs)
 
** 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-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]]
 
<!--
 
** 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.
 
** Xcode with gcc should ork with either version of ITK.
 
** 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`
 
-->
 
 
 
=== Windows ===
 
 
 
==== Common Prerequisites ====
 
* [{{tool|download|cmake}} CMake] >= 3.0 (3.7.1 recommended)
 
* [{{tool|download|git}} Git] >= 1.7.10
 
<!--
 
*[[{{tool|logo|cmake}}|x16px]]  [{{tool|download|cmake}}  CMake] >= 2.8.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.
 
-->
 
<!--
 
** Use of [http://code.google.com/p/tortoisegit/ TortoiseGit] is optional.
 
-->
 
** {{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.
 
 
 
* Qt:
 
** Qt5 <b>recommended and officially supported</b>. Download [https://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe qt-unified-windows-x86-online.exe] and install Qt along with <tt>qtscript</tt> and <tt>qtwebengine</tt> components. For building with VS2015, Qt version 5.10.x or older is required. For more details, read [[Documentation/Nightly/Developers/Build Instructions/Prerequisites/Qt5|step-by-step]] guide.
 
** Qt 4: will still work until Slicer-4.10 but not officially supported. See details [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt#Windows|here]].
 
 
 
==== Tested and recommended build environment ====
 
 
 
* VS2015
 
** 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)
 
** 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
 
* Qt 5.10
 
* CMake >= 3.3.1
 
 
 
==== Experimental/deprecated build environments ====
 
* [https://visualstudio.microsoft.com/vs/community/ Visual Studio 2017 (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''
 
* [https://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx Visual Studio 2013] with Update 5 (deprecated, should still work)
 
** As of [https://github.com/Slicer/Slicer/commit/71602609ce2ae5e473ece392500825ca96213371 commit 7160260]: Slicer compilation is successful, with some caveats.
 
** Build Qt 4.8.7 with SSL support using [https://github.com/jcfr/qt-easy-build/tree/4.8.7 qt-easy-build].
 
** '''Note: be sure to pick the version of qmake that you built in the earlier steps if applicable (CMake may pick a different qmake, for example if installed with anaconda)'''
 
* VS2012 (untested, may work)
 
** 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.
 
* VS2010 (untested, probably does not work)
 
** [https://www.microsoft.com/visualstudio/en-us/products/2010-editions Microsoft Visual Studio 2010] (Any edition)
 
** Make sure to build or install:
 
*** 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.
 
* VS2008 (untested, probably does not work)
 
** [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)
 
** Make sure to install 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.
 
*** Make sure to patch VS2008 using the script [https://gist.github.com/jcfr/3c7bef3f8b32f9f6ad4b fix-vc9-redist-manifests.ps1]
 
* 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).
 

Latest revision as of 19:04, 6 August 2020

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