Skip to content

Building ITK libraries

dkozinski edited this page Dec 3, 2012 · 10 revisions

Dawid Koziński 2012-12-03

=============================================================================== This is step by step tutorial on how to build ITK 4 libraries

$ mkdir itk-4.1.0
$ cd itk-4.1.0
$ git clone http://itk.org/ITK.git
$ git checkout -b v4.1.0
$ git tag
$ git show v4.1.0

tag v4.1.0 Tagger: Luis Ibanez [email protected] Date: Fri Mar 2 11:02:52 2012 -0500

ITK 4.1.0 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux)

iQIcBAABAgAGBQJPUO90AAoJEBRnWbEJ8i3glAkP/197JEk+II60Nq4+zTCGLsfz RogUaQT1MhU4xePCfesizVlV47Dz/WsLND/7R6q4H5E9DA4INYabjrgXVYwSbp/x UrvF0u2M0arADVM7f7f4fpz+Hn4NtXYO7IqK2/BgORoqBpbrW7ol9+yQgKgBB1sw buQ7kmpSEN4gQpDihqf9e6eR+X2Hj7hiqNzdbaVx3w0RsbVfA0iwLzdyGXfALotG 7cyfYleclkTex5CFYNIbn6HB3WXU3Cjv4stWbfE6zezdLApzX/F29q7XCZjJjuUB lW5TWh4WxQGxjA6r6dGjyXM2ImyJdnYZlUB+zkQITZsC3i6lrenLTsDhuW8BwStN NHB4e/UYYhlSFqNGH0sreOOszZdehsTb98ngLyOIl13LjrePKNnH6JAI2IpZJm4b uzAgK4rWbkWambrAqbhf/ZMmOQ+1PnhICErZIgLUBzHBNnaykLtyRZvgSwVOBhE/ 0WaCJIpH6F6zH9r2bIrA0E1DRv2fclrgO3dG34W20byz6SPpoVPqPEIlFIi+V+4/ wjMJ4kLYGV11yFJw5vhkOI4kUFfdBk1AVJ3BXFmYldoMfsEobdl0oX2K2HrIqdHv aNlHK4tOB1pNQrfKjembK/AcyUBhSoG7eckV0Xk8AOAfka7b6iydFM13/7NnOdQ3 BbkB1IZL2iYmS+g5hnM+ =xEVw -----END PGP SIGNATURE-----

commit 4af483dd16e960583f0c02633f594fd253844a61 Author: KWSys Robot [email protected] Date: Fri Mar 2 00:01:08 2012 -0500

...
$ git show v4.1.0

$ git reset --hard 4af483dd16e960583f0c02633f594fd253844a61
($ refactor_namespace.sh)
$ mkdir build
$ cd build
$ ccmake ..

 Set the options as follows
 
 <samp>BUILD_EXAMPLES OFF</samp><br>
 <samp>BYUILD_TESTING OFF</samp><br>
 
 and generate make file

$ make

=============================================================================== References

http://osirixpluginwithitk320.wikispaces.com/ http://www.itk.org/CourseWare/Training/GettingStarted-I.pdf http://www.itk.org/Wiki/ITK/Examples/EdgesAndGradients/DerivativeImageFilter http://osirixpluginbasics.wordpress.com/2011/01/16/osirix-plugin-with-itk-framework/

=============================================================================== refactor_namespace.sh

#!/bin/sh # srcipt for renaming the ikt namespace # working with ITK v3.20 and ITK4.0 # Created by Brian Jensen # Modified by Danilo Torrisi & Rene Laqua

echo $1 echo $2

if [ "$1" == "" ]; then echo "Usage: refactor_namespace.sh ITK_DIR NEW_NAMESPACE" && exit 1 fi

if [ -n "$2" ]; then NEWNAME=$2 else NEWNAME="psfITK" fi

#ITK v3.20 echo "Modifying Utilitites/CMakeLists.txt file, changing systems namespace" sed -e "s/SET(KWSYS_NAMESPACE itksys)/SET(KWSYS_NAMESPACE ${NEWNAME}sys)/g" "$1/Utilities/CMakeLists.txt" > "$1/Utilities/CMakeLists.txt.sed" test -s "$1/Utilities/CMakeLists.txt.sed" && (cmp -s "$1/Utilities/CMakeLists.txt.sed" "$1/Utilities/CMakeLists.txt" || mv -f "$1/Utilities/CMakeLists.txt.sed" "$1/Utilities/CMakeLists.txt") echo "done\n"

echo "Modifying Code/IO/CMakeLists.txt, deavtivating test driver" cp "$1/Code/IO/CMakeLists.txt" "$1/Code/CMakeLists.txt.original" sed -e '/ADD_EXECUTABLE(itkTestDriver itkTestDriver.cxx)/,/CACHE INTERNAL "itkTestDriver path to be used by subprojects")/d'
"$1/Code/IO/CMakeLists.txt" > "$1/Code/IO/CMakeLists.txt.sed" test -s "$1/Code/IO/CMakeLists.txt.sed" && (cmp -s "$1/Code/IO/CMakeLists.txt.sed" "$1/Code/IO/CMakeLists.txt" || mv -f "$1/Code/IO/CMakeLists.txt.sed" "$1/Code/IO/CMakeLists.txt") echo "done"

#ITK v4.0 echo "Modifying Modules/ThirdParty/KWSys/src/CMakeLists.txt file, changing systems namespace" sed -e "s/set(KWSYS_NAMESPACE itksys)/set(KWSYS_NAMESPACE ${NEWNAME}sys)/g" "$1/Modules/ThirdParty/KWSys/src/CMakeLists.txt" > "$1/Modules/ThirdParty/KWSys/src/CMakeLists.txt.sed" test -s "$1/Modules/ThirdParty/KWSys/src/CMakeLists.txt.sed" && (cmp -s "$1/Modules/ThirdParty/KWSys/src/CMakeLists.txt.sed" "$1/Modules/ThirdParty/KWSys/src/CMakeLists.txt" || mv -f "$1/Modules/ThirdParty/KWSys/src/CMakeLists.txt.sed" "$1/Modules/ThirdParty/KWSys/src/CMakeLists.txt") echo "done\n"

echo "Modifying Modules/Core/TestKernel/src/CMakeLists.txt, deavtivating test driver" cp "$1/Modules/Core/TestKernel/src/CMakeLists.txt" "$1/Modules/Core/TestKernel/src/CMakeLists.txt.original" sed -e "s/^/#/" "$1/Modules/Core/TestKernel/src/CMakeLists.txt" > "$1/Modules/Core/TestKernel/src/CMakeLists.txt.sed" test -s "$1/Modules/Core/TestKernel/src/CMakeLists.txt.sed" && (cmp -s "$1/Modules/Core/TestKernel/src/CMakeLists.txt.sed" "$1/Modules/Core/TestKernel/src/CMakeLists.txt" || mv -f "$1/Modules/Core/TestKernel/src/CMakeLists.txt.sed" "$1/Modules/Core/TestKernel/src/CMakeLists.txt") echo "done"

FILELIST=find $1 \( -name "*.h" -o -name "*.txx" -o -name "*.cxx" -o -name "*.hxx" \) -print

#echo "$FILELIST"

for i in $FILELIST; do echo "Changing $i ..." sed -e "s/namespace[ \t*]itk/namespace $NEWNAME/g" -e "s/::itk/::$NEWNAME/g" -e "s/itk::/$NEWNAME::/g" -e "s/itksys/${NEWNAME}sys/g" -e "s/itkv3/$NEWNAMEv3/g" "$i" > "$i.sed" #cat "$i.sed" test -s "$i.sed" && (cmp -s "$i.sed" "$i" || mv -f "$i.sed" "$i") rm -f "$i.sed" echo "done\n"

done