Slicer3:Build Instructions
Contents
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 ./Slicer3/Scripts/getbuildtest.tcl
Building the latest development version
svn co http://svn.slicer.org/Slicer3/trunk Slicer3 ./Slicer3/Scripts/getbuildtest.tcl
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):
./Slicer3-build/Slicer3
Note: the whole build environment takes about 8G of disk space.
Additional Information About getbuildtest and Building Slicer
Testing
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
Usage:
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
or
# 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.
Debugging
Since slicer relies on shared libraries, the correct paths must be set up before the debugger can operate (this is accomplished with the Slicer3 Launcher which is in the top level of Slicer3-build). The actual executable entry point (which should not be invoked directly by users) is Slicer3-build/bin/Slicer3-real. The following steps create a shell that has the proper paths set up:
./Slicer3 --launch xterm &
or, on windows (with rxvt installed via cygwin):
./Slicer3 --launch rxvt &
Inside the newly launched windows, you can run:
./Slicer3/bin/Slicer3-real
or you can run the debugger of your choice. Other tools, such as performance analyzers, memory checkers, etc can also be used in the subshell. Using the launcher is a convenient way to set up the paths for the local build without needing to set any library paths on a system-wide basis. Note that this allows you to have several slicer builds in different directories without having them interfere with one another. The slicer launcher should also allow you to run slicer with it's own local path settings even if you have globally installed versions of VTK, ITK, tcl, python, etc.
More information is available at the links below:
- For information on using the launcher to debug with gdb, see: [1]
- For debugging with Visual Studio, see: [2]
- For debugging command line modules, see [3]
Note you can also debug in XCode with similar methods, but you may need to manually copy the DYLD_LIBRARY_PATH into the project properties (XCode does not seem to inherit from its parent shell).
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
glxgears
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 when run from a cygwin terminal window on a properly configured windows environment. Current requirements are:
- Microsoft Visual Studio with Visual C++ compiler installed
- Install all available service packs for Visual C++
- If they are installed in the default locations in "c:/Program Files" they will be detected by the build script automatically (if they are not installed in the default location or you have multiple compiler versions installed, then you may need to edit slicer_variables.tcl to set the compiler installation path).
- Compiler version:
- Developer Studio 9.0 2008 Visual C++ - this compiler is used to build Slicer3.5 development releases, there are no known limitations
- Developer Studio 9.0 2008 Visual C++ Express (the free version from Microsoft) - see detailed installation instructions here.
- Developer Studio 8.0 2005 Visual C++ - it can be used to build Slicer3.5 with the following limitations
- Python will be disabled (only Visual Studio 2008 compiler supported by python 2.6).
- The compiler randomly crashes during the build (there is no known fix for this problem, just a workround: in case of a crash restart the build)
- Developer Studio 7.1 2003 and older - not tested and may not work
- Cygwin installed with the following packages - see detailed installation instructions here
- NSIS installed (needed for installation package generation)
- The build directory shall be on an NTFS formatted disk (CMake and VTK will not work on a FAT formatted disk)
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.
- Package requirements http://www.orl.szote.u-szeged.hu/~attila/package.requirements.Slicer.on.Solaris.html
- Build instructions http://www.orl.szote.u-szeged.hu/~attila/slicer.build.instructions.html
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
SBuild is a new, experimental build system for Slicer. For more information about SBuild, see the SBuild page.