TubeTK/Build Instructions
Process
TubeTK has been tested on Windows, OS X, and Linux.
The process consists of the following steps
- Install requirements
- Optionally install recommendations
- Download source
- Configure using CMake
- Build
Install Requirements
- CMake
- GIT
CMake
Install the latest stable release.
GIT
Install the latest stable release.
- Windows
- Linux
sudo apt-get install git
Optionally Install Recommendations
- Slicer
- Boost
Slicer
Download and install the latest stable release of Slicer. You can use either binaries or compile from source.
- Source: http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Build_Instructions
- Binaries: http://download.slicer.org/
Oddities
- There is a bug in Slicer v4.4.0 that prevents it from compiling on OSX 10.9. The simple fix is pending integration into Master. You can apply it manually. See https://github.com/Slicer/Slicer/pull/189/files
Boost
Download and build Boost:
Oddities
- We do not recommend the pre-built versions of Boost on most modern platforms. Most binary distributions don't support 64bit builds. You should build with appropriate options, such as:
./bootstrap.sh --prefix=/usr/local/boost-1_57 sudo ./b2 address-model=64 cflags=-fPIC cxxflags="-fPIC -std=c++11" link=static install
Download Source
Download the source via git
git clone https://github.com/TubeTK/TubeTK TubeTK
Configure
Create a directory, outside of the source directory, to hold the compilation
mkdir TubeTK-Release cd TubeTK-Release
Within that compilation directory, run ccmake and point it to where the source is located
ccmake ../TubeTK
Build
Windows
Microsoft Visual Studio
- Load the TubeTK solution file
- Select File -> Open -> Project/Solution -> open TubeTK-Release/TubeTK.sln
- Perform the initial build using your compiler at the top-level of TubeTK-Release. This will update and build the libraries that TubeTK depends on (ex. VTK, ITK), and then build TubeTK.
- Right click on the "ALL_BUILD" project and select "Build".
- Subsequent builds should be initiated in the subdir TubeTK-Release/TubeTK-build to save time. This will build TubeTK only. You may have to periodically build from the top-level of TubeTK-Release to get updates to the libraries that TubeTK depends on.
- Right click on the "TubeTK" project and select "Build".
Linux and OS X
- Perform the initial build using your compiler at the top-level of TubeTK-Release. This will update and build the libraries that TubeTK depends on (ex. VTK, ITK), and then build TubeTK.
cd $HOME/TubeTK-Release make
- Subsequent builds should be initiated in the subdir TubeTK-Release/TubeTK-build to save time. This will build TubeTK only. You may have to periodically build from the top-level of TubeTK-Release to get updates to the libraries that TubeTK depends on.
cd $HOME/TubeTK-Release/TubeTK-build make
Advanced
Using KWStyle
For introductory information, see: http://public.kitware.com/KWStyle/.
git clone http://public.kitware.com/KWStyle.git $HOME/KWStyle mkdir $HOME/KWStyle-Release cd $HOME/KWStyle-Release cmake -DCMAKE_BUILD_TYPE=Release ../KWStyle make sudo make install
cd $HOME/TubeTK-Release cmake -DTubeTK_USE_KWSTYLE=ON -DKWSTYLE_EXECUTABLE=/usr/local/bin/KWStyle . make make StyleCheck
Using a pre-existing ITK, JsonCpp, or VTK installation
You can also configure CMake variables to use an existing JsonCpp installation instead of an embedded version.
cd $HOME/TubeTK-Release cmake -DUSE_SYSTEM_JSONCPP .
You can also configure CMake variables to use an existing ITK or VTK installation instead of an embedded versions. This is not recommended, because of inter-dependencies that require specific version of these libraries, and built using specific options, to be used.
- USE_SYSTEM_ITK: OFF
- If "ON", then you can tell TubeTK to use an ITK build that is already present on your system (using the CMake variable ITK_DIR).
- USE_SYSTEM_VTK: OFF
- If "ON", then you can tell TubeTK to use a VTK build that is already present on your system (using the CMake variable VTK_DIR). See the warning below.
- Dependency on VTK version and build options
- Note that TubeTK relies on VTK from 3D Slicer (https://github.com/Slicer/VTK)
- The 3D Slicer fork of VTK contains enhancements that have not yet made it into the VTK repository itself.