Difference between revisions of "Slicer3:Build Instructions"

From Slicer Wiki
Jump to: navigation, search
(Fixed cygwin package name (correct svn package name is "subversion"))
Line 136: Line 136:
* [http://www.cygwin.com Cygwin] with the following packages
* [http://www.cygwin.com Cygwin] with the following packages
** tcltk
** tcltk
** svn
** subversion
** cvs
** cvs
** unzip
** unzip

Revision as of 16:20, 24 November 2009

Home < Slicer3:Build Instructions

All-in-one Script to checkout and build Slicer3

To compile and build Slicer3, you need a set of development packages installed on your machine:

There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission. (Click here for background on getbuildtest and the experimental getbuildtest2 version).

Building the 3.4 release

For Linux and Mac, just do the following two commands (If you are a Windows user, see the section for Windows users below):

  svn co http://svn.slicer.org/Slicer3/branches/Slicer-3-4 Slicer3


Building the latest development version

  svn co http://svn.slicer.org/Slicer3/trunk Slicer3


Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.

To run (all platforms):


Note: the whole build environment takes about 8G of disk space.

Additional Information About getbuildtest and Building Slicer


Note also that getbuildtest will do an Experimental submission to the Slicer3 dashboard. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with

getbuildtest.tcl -t ""

Other options for the -t (--test-type) option are Nightly or Continuous (or any of the CTest options).

What does getbuildtest.tcl do?

This script just automates the steps needed to build slicer. What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally. That is, on windows you will have solution files that you can load in visual studio for debugging and further development.

Specifically, getbuildtest does the following steps:

  • Refreshes Slicer3 svn
  • Runs Scripts/genlib.tcl which does the following for each of the support libraries
    • does a cvs/svn checkout/update
    • runs cmake with the correct settings for use with Slicer3
    • runs make (or developer studio) to build the libraries
  • Runs cmake on Slicer3
  • Builds Slicer3
  • Runs ctest on Slicer3
  • (optionally) Runs CPack on Slicer3



 usage: getbuildtest [options] [target]
   [target] is determined automatically if not specified
   [options] is one of the following:
    --help : prints this message and exits
    --clean : delete lib and build directories first
    -t --test-type : CTest test target
    --release : compile with optimization flags
    --update : does a cvs/svn update on each lib
    --pack : builds a distribution package (cpack)

Errors from getbuildtest

You will need to have your firewall configured to allow access to cvs servers through port 2401. Also you need 8081 for submitting to the dashboard.

Other errors might mean you don't have all the build tools (see next section).

If you want to generate a log of the build process, you can use a command like the following:

# for csh/tcsh:
./Scripts/getbuildtest.tcl |& tee build.log


# for sh/bash:
./Scripts/getbuildtest.tcl 2>&1 | tee build.log

Windows: visual studio build messages do not go to stdout/stderr, but each build directory in Slicer3-lib will have a buildlog.txt file with the details.

Updating Your getbuildtest Build

There are a few options:

  • you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)
  • you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).
  • you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.

The following command for unix machines will update, build, and launch the latest Slicer3:

svn update && (cd ../Slicer3-build; make && ./bin/Slicer3)

Note that on Windows you can also use the CMakeSetup.exe interface to CMake and then use Microsoft Visual Studio for debugging. You can use a command like the following in a cygwin shell to use the slicer launcher to start up visual studio with the correct environment to find the .dll files needed for debugging.

./Slicer3.exe --launch c:/Program\ Files/Microsoft\ Visual\ Studio\ 8/Common7/IDE/devenv.exe --detach Slicer3.sln

getbuildtest on linux

To compile Slicer3 and do development, be sure you have a complete set of development packages installed on your machine. The exact packages vary by distribution, but include:

  • gcc
  • gcc-c++
  • libX11
  • libX11-devel (libX11-dev on Ubuntu 7.04)
  • libXt-devel (libXt-dev on Ubuntu)
  • opengl/mesa (libgl1-mesa-dev on Ubuntu)

Ubuntu one line install:

sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh

Also, be sure you have OpenGL and the GLX extension to X working. To check the installation, it is usually enough to confirm that the command


runs with no errors.

Problems with Font Size:

Under certain Linux distributions (such as Ubuntu 8.04) you might experience that the font size in Slicer is too large. To fix the issue, execute the following command

sudo apt-get install gawk ttf-baekmuk ttf-devanagari-fonts transfig lesstif2 xpdf-reader xpdf-common

getbuildtest on Windows

The script should work fine on a properly configured windows environment. Current requirements are:

  • Developer Studio 8 2005
    • For Developer Studio 9.0 2008 Visual C++ Express (the free version from Microsoft) there is a separate page of instructions below.
    • Be sure to install any service packs for Visual C++.
    • Older releases of visual studio are not tested and may not work (2003, 7, and 7.1)
    • If they are installed in the default locations in "c:/Program Files" they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).
  • Cygwin with the following packages
    • tcltk
    • subversion
    • cvs
    • unzip
    • curl
  • With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.

Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).

Follow this link for more notes on building slicer for windows.

getbuildtest on Apple Mac OS X

For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):

  • Xcode Tools (OS Disk 1, default window)
  • X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See step-by-step instructions.
  • X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg
  • Subversion. Installation options here. Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).

Remember to run getbuildtest from an xterm so the tests can access the X server.

Note: The Apple X11 application on Mac OSX 10.5.x (Leopard) crashes frequently. We suggest you replace the default XX with XQuartz.

getbuildtest on Solaris

The notes on package requirement and build instructions were contributed by Attila Nagy.

Getbuildtest on Solaris

To build Slicer on Solaris, the best practice is to install the OS with Entire Distribution + OEM Support. 
This way all needed libraries and tools will be there. Solaris 10, Solaris eXpress Community Edition (SXCE), 
and Solaris eXpress Developer Edition (SXDE) 1/08 are all tested.

The needed packages are:
SUNWgcc SUNWgmake SUNWcvs SUNWsvn SUNWTcl SUNWxwplt SUNWxorg-mesa SUNWxorg
In case there are missing packages, yout can install them from the install CD/DVD. 
Put it in the drive, or mount the iso via lofi, and browse to the Solaris_10/Product 
(or Solaris_11/Product in case of SXCE/SXDE) directory, and
pkgadd -d . SUNWgcc SUNWgmake SUNWcvs SUNWsvn SUNWTcl SUNWxwplt SUNWxorg-mesa SUNWxorg

Make sure to put /usr/sfw/bin in your path, so the build tools find gcc/g++. Compilation 
with Sun's compilers (cc/CC) is not yet fully supported, but work is on the way.

If you need, you can install newer versions of the above tools either from blastwave, or 
from sunfreeware. In both cases check your paths! Put /opt/csw/bin in case of blastwave, 
and /usr/local/bin in case of sunfreeware in your profile, and replace "/usr/sfw/bin/g++" 
in Slicer3/slicer_variables.tcl with the updated paths.

You can check your 3D acceleration by running: /usr/X11/demo/glxgears
Best results can be achieved with nVidia cards, as there do not exist drivers with 3D 
acceleration for Ati cards on Solaris. Intel's chipsets should be fine too.
All the above is for Solaris10/SXCE/SXDE. Opensolaris 2008.5 and .11 are both untested, 
but provided they contain all the developer tools, and the paths are set up correctly, 
Slicer should compile fine on it too. 

configuration options

The file Slicer3/slicer_variables.tcl includes configuration options for which versions of support libraries to use. You may want to change these for testing or to get access to new functionality.

These flags control the versions of code pulled from external repositories:

set ::Slicer3_TAG "http://svn.slicer.org/Slicer3/trunk"
set ::CMAKE_TAG "CMake-2-6"
set ::KWWidgets_TAG "Slicer-3-2"
set ::VTK_TAG "VTK-5-2"
set ::ITK_TAG ITK-3-6
set ::PYTHON_TAG "http://svn.python.org/projects/python/branches/release25-maint"

Other libraries, such as Tcl/Tk, teem, and curl, together with windows binaries for CMake and Tcl/Tk are mirrored for efficiency at http://svn.slicer.org/Slicer3-lib-mirrors.

For example, you may want a build against the ITK cvs head. Change the flag value and then run

getbuildtest.tcl --update 

which will get the version from cvs, build it, and rebuild slicer3. Depending on how radically different the versions you build are, you may need to use the --clean option which will delete all build directories and rebuild.

Building with Qt

If you start with an already built slicer, you can add Qt to the build. As of fall 2009 this is still very much a work in progress and the details are expected to change.

Manual Build

You can also build Slicer without using getbuildtest.tcl. For more information about manually compiling Slicer, see this page.


SBuild is a new, experimental build system for Slicer. For more information about SBuild, see the SBuild page.