NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
Architecture - Dependencies on Third Party Software

Introduction

With the exception of NiftyView, each of the individual Nifty<Something> packages, listed here can be downloaded individually, and by design have very few dependencies and are easy to build. However, this NifTK project contains

and has dependencies on several widely used third party libraries.

Current Versions of Third Party Software

The following third party libraries are used:

and this version of the NifTK documentation was generated from subversion revision ID: . These version numbers contained within this document are generated during the build process so should always be up-to-date. The subversion revision ID of NifTK refers to the last checked in version in the repository. So, if a developer has checked out version , and made changes, the revision ID displayed within the Help About box of NiftyView will be until the code is checked in.

Dependencies between Third Party Software

Before building the toolkit, the user must decide whether or not they are building the GUI by selecting the BUILD_GUI flag to be either OFF or ON. If the user only wants scripts and command line programs, then the list of dependencies is smaller, and the build is quicker. The following figure illustrates the compile time dependencies where the arrow denotes 'depends upon'.

ThirdPartyLibs.png
Figure 1. Compile time dependencies of the third part libraries, where each arrow denotes 'depends upon'.

From Figure 1. we can see that Qt, Boost and GDCM have no dependencies, they are built without the knowledge of any of the other packages. Also note that the larger packages such as CTK can download and install additional packages, not listed here. For example CTK will download DCMTK, but as the rest of NifTK is not specifically calling DCMTK methods, it is not listed here.

It is also worth noting that on many cluster machines, graphics cards, OpenGL or Qt may or may not be installed. This means that the two types of build, GUI and non-GUI are not just a convenience. This choice of build structure enables the user to build a GUI build for a workstation, and a non-GUI build for running command line programs on a headless server.