A superbuild infrastructure to build all superbuild structures
Ash nazg durbatulûk,
ash nazg gimbatul,
Ash nazg thrakatulûk
agh burzum-ishi krimpatul.
- Sauron, the Abhorred
This project acts as a template to model building all other SuperBuild projects around.
NAMICExternalProjects/
-
CMakeLists.txt
A file that acts as a top level switch, it runs the building of pre-requisite ExternalProjects defined in SuperBuild.cmake (where ${MyProject} is last ExternalProject to be built). This file is processed by CMake 2 times: the first time processes SuperBuild.cmake and the second time processes ${MyProject}.cmake
-
Common.cmake
Included in SuperBuild.cmake and ${MYProject}.cmake for common conditional compilation options to be set. These options must be passed to all ExternalProjects (including ${MYProject})
-
SuperBuild.cmake
Infrastructure to build all the pre-requisite packages where ${MYProject} is the last one listed
-
${MYProject}.cmake
Standard cmake build instructions for ${MYProject}
-
SuperBuild/
A directory full of External_${extProjName}.cmake files defining how to build external dependencies.
-
CMake/
A directory of support files.
- CMake 3.28 through 4.2
- A C++17 compiler (GCC 13 and Clang are tested)
- Python 3.12 or newer, found at configure time
- Ninja (recommended); ccache is used automatically when found
git clone https://github.com/BRAINSia/NAMICExternalProjects.git
cmake -S NAMICExternalProjects -B NEP-build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build NEP-buildEach tool installs or builds into its own directory under NEP-build;
most command line tools are also placed in NEP-build/bin.
NAMICExternalProjects_REQUIRES_VTK(ON): build VTK and the tools that need it (DTIProcess, niral_utilities, UKF).NAMICExternalProjects_REQUIRES_TBB(ON): build oneTBB and use it in ITK and VTK; BRAINSABC is built only when this is ON.NAMICExternalProjects_BUILD_SimpleITK(OFF): build SimpleITK with Python wrapping against the superbuild ITK.pip install SimpleITKis the quicker route when the superbuild ITK is not needed.BUILD_STYLE_UTILS(OFF): build KWStyle, Cppcheck, and Uncrustify.NAMICExternalProjects_BUILD_vv(OFF): build the vv image viewer. Needs Qt 6 development files; turns on VTK rendering with Qt and ITK's RTK module. The viewer isbin/vvin the build tree.NAMICExternalProjects_EP_GIT_SHALLOW(OFF): shallow clones.
The toolkits are ITK 6.0 (pinned to a main branch commit), VTK 9, oneTBB, zlib-ng, DCMTK, teem, and SlicerExecutionModel. ITK uses the superbuild's DCMTK, and UKFTractography uses the Eigen bundled with ITK. The tools are BRAINSTools, ANTs, DTIProcess, niral_utilities, UKFTractography, dcm2niix, MRParameterMaps, JointRicianAnisotropicLMMSEFilter, UnbiasedNonLocalMeans, and DoubleConvert. The nipype and tract_querier Python sources are fetched for installation with pip.
Tools whose upstream has not been updated for ITK 6 carry a patch in
SuperBuild/patches/, applied in the external project's patch step.
DTIPrep is no longer built. Its quality control is superseded by
dmriprep in DTIPlayground,
which installs with pip install dtiplayground and calls the
DTIProcess and niral_utilities tools built here.