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

From Slicer Wiki
Jump to: navigation, search
Line 55: Line 55:
 
==== Ubuntu ====
 
==== Ubuntu ====
  
'''For all Ubuntu versions''':
+
===== Common Prerequisites =====
  
* Ubuntu 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
Line 63: Line 62:
 
  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 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
'''cmake: For Ubuntu < 12.04''':
 
  sudo apt-get install cmake # Only for Ubuntu < 12.04
 
 
 
'''cmake: For Ubuntu >= 12.04''':
 
 
 
You *MUST download the standard CMake binary* from http://cmake.org/download because the distributed version of CMake cannot be used to build slicer.
 
 
 
For example, on a 64-bit system, you will download the file <code>cmake-X.Y.Z-Linux-x86_64.tar.gz</code> associated with the latest stable version.
 
 
 
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.
 
 
 
 
 
'''libosmesa6-dev: For Ubuntu < 14.04.3''':
 
 
 
sudo apt-get install libosmesa6-dev
 
  
 
{{remark|red|On Ubuntu 14.04.3 LTS, attempting to install <tt>libosmesa6-dev</tt> results in an error.<pre>
 
{{remark|red|On Ubuntu 14.04.3 LTS, attempting to install <tt>libosmesa6-dev</tt> results in an error.<pre>
Line 89: Line 73:
 
{{remark|green|Slicer compiles successfully without that package, but <tt>VTK_OPENGL_HAS_OSMESA</tt> is disabled.}}
 
{{remark|green|Slicer compiles successfully without that package, but <tt>VTK_OPENGL_HAS_OSMESA</tt> is disabled.}}
  
<!--
+
===== CMake =====
 +
 
 +
<ol>
 +
<li>Open a terminal and copy the command reported below</li>
 +
<li>Download stable version of CMake and extract the archive:
 +
<pre>
 +
mkdir ~/Support && cd ~/Support
 +
curl -O https://cmake.org/files/v3.5/cmake-3.5.2-Linux-x86_64.tar.gz
 +
tar -xzvf cmake-3.5.2-Linux-x86_64.tar.gz
 +
</pre>
 +
</li>
 +
<li>Create symbolic links into <code>~/bin</code>
 
<pre>
 
<pre>
sudo apt-get install openssl libssl-dev
+
mkdir -p ~/bin
 +
for name in cmake ctest cpack ccmake cmake-gui; do
 +
  ln -s ~/Support/cmake-3.5.2-Linux-x86_64/bin/$name ~/bin/$name
 +
done
 +
</pre>
 +
</li>
 +
</ol>
  
mkdir ~/Support && cd Support    # This is where we will download and install required software
+
{{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.}}
  
# By copying this one-liner in your terminal, it will download and build CMake
+
===== Qt =====
wget http://www.cmake.org/files/v3.3/cmake-3.3.1.tar.gz && \
 
tar xzvf cmake-3.3.1.tar.gz \
 
cd cmake-3.3.1 && \
 
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-3.3.1/bin/$tool /usr/local/bin/$tool; done
 
</pre>
 
-->
 
  
'''qt: For Ubuntu 14.04 and above''': Qt 4 == 4.8.7 MUST be used.
+
'''Ubuntu 14.04 and above''': Qt 4 == 4.8.7 MUST be used.
  
 
See https://github.com/jcfr/qt-easy-build/blob/4.8.7/Build-qt.txt
 
See https://github.com/jcfr/qt-easy-build/blob/4.8.7/Build-qt.txt
Line 114: Line 105:
  
  
'''qt: For Ubuntu 12.04, 12.10, 13.04 and 13.10''': Qt 4 >= 4.8.5 MUST be used.
+
'''Ubuntu 12.04, 12.10, 13.04 and 13.10''': Qt 4 >= 4.8.5 MUST be used.
  
 
<pre>
 
<pre>

Revision as of 19:33, 6 July 2016

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


For the latest Slicer documentation, visit the read-the-docs.


PREREQUISITES


Consider reading platform specific requirements listed below.

Linux

  • CMake >= 3.x
  • Git >= 1.7.10
  • Svn >= 1.7
  • Qt 4.8.6. See details here. See some history here (Note that any version >= Qt 4.7.4 can be used only for Ubuntu < 12.04)

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 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 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
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.
CMake
  1. Open a terminal and copy the command reported below
  2. Download stable version of CMake and extract the archive:
    mkdir ~/Support && cd ~/Support
    curl -O https://cmake.org/files/v3.5/cmake-3.5.2-Linux-x86_64.tar.gz
    tar -xzvf cmake-3.5.2-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.5.2-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.
Qt

Ubuntu 14.04 and above: Qt 4 == 4.8.7 MUST be used.

See https://github.com/jcfr/qt-easy-build/blob/4.8.7/Build-qt.txt


Ubuntu 12.04, 12.10, 13.04 and 13.10: Qt 4 >= 4.8.5 MUST be used.

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
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
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

For more details, consider reading the FAQ entry: Why Qt 4 >= 4.8.5 should be used on Ubuntu 12.04 and above ?

CentOS

  • 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


MacOSX

MacOSX 10.9.4 (Mavericks)

(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, 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)

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.

After installing the OS and Xcode, run 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.

Windows

Common Prerequisites

  • CMake >= 3.0
  • Git >= 1.7.10
    • 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.
  • SlikSvn . If using TortoiseSVN (versions that support command line tools), make sure you install Command line tools (disabled by default)
  • NSIS (optional): Needed if packaging Slicer - Click here to download.
  • Qt: See details here.

Tested and recommended build environment

  • Visual Studio 2013 with Update 5, as of commit 7160260: Slicer compilation is successful, with some caveats.
    • CMake >= 3.3.1
    • Build Qt 4.8.7 with SSL support using qt-easy-build.
    • For Debug mode, disable Slicer_USE_SimpleITK in CMake.

Experimental/deprecated build environments