This ITK Software Guide is the handbook for developing software with ITK.
It is divided into two companion books.
The first book covers building and installation, general architecture and design, as well as the process of contributing in the ITK community.
The second book covers detailed design and functionality for reading and writing images, filtering, registration, segmentation, and performing statistical analysis.
This repository contains the source code for the Software Guide.
Contributions are welcome and appreciated!
The following commands illustrate patch submission to GitHub:
$ git clone https://github.com/InsightSoftwareConsortium/ITKSoftwareGuide.git
$ cd ITKSoftwareGuide
$ ./Utilities/SetupForDevelopment.sh
$ git checkout -b my-topic
# make changes to local file(s)
$ git add -- changedFileName
$ git commit
$ git review-push
For more detailed instructions, see the CONTRIBUTING.md file.
All the dependencies described belowe are available pre-installed in a Docker image. This is the easiest way to build and contribute to The Software Guide.
docker run --name software-guide -p 8888:8888 insighttoolkit/itksoftwareguide-edit:latest
ssh-keygen
cat ~/.ssh/id_rsa.pub
# Paste this value into https://github.com/settings/keys
cd /ITKSoftwareGuide
./Utilities/SetupForDevelopment.sh
cd /ITKSoftwareGuide-build/ITKSoftwareGuide-build
ninja
/ITKSoftwareGuide-build/ITKSoftwareGuide-build/SoftwareGuide/Latex/
,
and double click on the PDF.docker start software-guide
.A combination of CMake
Superbuild
infrastructure, Python extraction scripts, and LaTeX
formatting are required to render the entire ITK Software Guide.
CMakeLists.txt
files are placed in the directories
involved on the build process. As any other CMake-managed process, the results
of the build process are put in a binary tree corresponding to the source tree.
The following dependencies are required to build ITK Software Guide on Linux or Windows platforms:
./SoftwareGuide/Latex/00-Preamble-Common.tex
file for the full list of
required LaTeX packages. Among these packages, the Minted package for
syntax highlighting in its turn depends on a Python package Pygments.
Instructions for installing Minted and Pygments packages on Windows are
available here.ITK Software Guide is generated with Latex by using input from a variety of source code files and images:
./SoftwareGuide/Latex
../SoftwareGuide/Art
..cxx
files where the comments delimited with
BeginLaTeX
, EndLaTeX
and BeginCodeSnippet
, EndCodeSnippet
have
been written specifically to be included in the ITK Software Guide; the
regular LaTeX files in ./SoftwareGuide/Latex
include the LaTeX files
generated from the ITK examples source code.Following is a brief description of the build process:
ITK
is downloaded and built (including ITK
examples) in the binary output directory../SoftwareGuide/Art
directory are converted
to EPS using ImageMagick tools; the resulting EPS files are saved in the
Art
directory in the binary output directory.Art/Generated
directory of the binary output directory../SoftwareGuide/Examples/ParseCxxExamples.py
is invoked to extract the comments in the ITK examples source file
delimited with BeginLaTeX
, EndLaTeX
and BeginCodeSnippet
,
EndCodeSnippet
and generate LaTeX files which are copied into the
Examples
subdirectory of the binary output directory../SoftwareGuide/LaTeX/ITKSoftwareGuide-Book1.tex
is compiled with a series of calls to latex
, bibtex
, latex
,
makeindex
,dvips
, and ps2pdf
to generate the PDF file.Following is the description how to configure and build ITK Software Guide using CMake:
$ ccmake source_dir
where source_dir is the full path of the ITKSoftwareGuide
directory.
SuperBuild\_ITKSoftwareGuide
project as appropriate for the target
platform.Build process will fail if CMake is unable to locate any of the dependencies. In this case a close examination of the error messages might provide a clue as to which dependency is failing.
Frustrated by the build taking a long time to complete ... no solution here :blush:.