ITK/Configuring and Building: Difference between revisions

From KitwarePublic
< ITK
Jump to navigationJump to search
No edit summary
Line 65: Line 65:
  //Build cswig Tcl wrapper support
  //Build cswig Tcl wrapper support
  ITK_CSWIG_TCL:BOOL=ON
  ITK_CSWIG_TCL:BOOL=ON
==== Ebuild for Gentoo Linux ====
For Gentoo Linux you can use the ebuild shown below, or alternatively download it [http://www.elreki.net/gentoo/itk-2.4.1.ebuild here]. Please notice that this ebuild does not build the Python/TCL wrapper support.
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit distutils eutils flag-o-matic toolchain-funcs versionator
DESCRIPTION="NLM  Insight Segmentation and Registration Toolkit"
HOMEPAGE="http://www.itk.org"
SRC_URI="mirror://sourceforge/${PN}/InsightToolkit-${PV}.tar.gz"
LICENSE="BSD"
KEYWORD="~x86"
SLOT="0"
KEYWORDS="~x86"
IUSE="patented"
DEPEND="sys-libs/zlib
                media-libs/jpeg
                media-libs/libpng
                media-libs/tiff"
RDEPEND="${RDEPEND}
                  >=dev-util/cmake-1.8"
MY_PV=$(replace_all_version_separators '-')
S=${WORKDIR}/InsightToolkit-${MY_PV}
src_compile() {
        # Out of source build
        mkdir my_build && cd my_build
        # Install path prefix, prepended onto install directories
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DCMAKE_INSTALL_PREFIX:PATH=/usr"
        # Build ITK with shared libraries
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DBUILD_SHARED_LIBS:BOOL=ON"
        # Don't bother building the testing tree
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DBUILD_TESTING:BOOL=OFF"
        # Don't build examples now (let the user later)
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DBUILD_EXAMPLES:BOOL=OFF"
        # Give us an optimised release build
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DCMAKE_BUILD_TYPE:STRING=RELWITHDEBINFO"
        # We do not want rpath enabled
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DCMAKE_SKIP_RPATH:BOOL=ON"
        # Use the system libraries for these
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_SYSTEM_JPEG:BOOL=ON"
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_SYSTEM_PNG:BOOL=ON"
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_SYSTEM_TIFF:BOOL=ON"
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_SYSTEM_ZLIB:BOOL=ON"
        use patented && CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_PATENTED:BOOL=ON"
        # Run CMake twice to configure properly with CMake 2.2.x
        cmake ${CMAKE_VARIABLES} .. && cmake ${CMAKE_VARIABLES} .. \
                || die "CMake configuration failed"
        emake || die "emake failed"
}
src_install() {
        # Return to our build directory
        cd my_build
        # Do install
        make DESTDIR=${D} install || die "make install failed"
        # Fix configuration file
        sed -i -e "s:${D}:/:g" ${D}/usr/lib/${PN}/ITKConfig.cmake
       
        LDPATH="/usr/lib/InsightToolkit"
        echo "LDPATH=${LDPATH}" > ${T}/40${PN}
        echo "ITK_DATA_ROOT=/usr/share/${PN}/data" >> ${T}/40${PN}
        doenvd ${T}/40${PN}
}
pkg_postinst() {
        if use patented; then
                ewarn "Using patented code in ITK may require a license."
                ewarn "For more information, please read:"
                ewarn "http://www.vtk.org/Wiki/ITK_Patent_Bazaar"
        fi
}


=== CMake Configuration for Mac OS X ===
=== CMake Configuration for Mac OS X ===

Revision as of 16:39, 25 January 2006

Configuring And Building

This page describes the various ways of configuring and building ITK in common configurations. Recommended configurations are incldued for:

  • Linux
  • Mac OS X
  • Solaris
  • AIX
  • Windows

It is strongly recommended that you build ITK in a separate tree. This is described elsewhere (?).

CMake Configuration for Linux

This configuration is the one used to build the packages for Debian GNU/Linux, but should work for any distribution just fine. It assumes that you already have certain libraries installed (which will almost always be the case), specifically:

  • libzlib
  • libjpg
  • libtiff
  • libpng

The rpath option is disabled, as it is only really needed if you install the libraries into someplace other than a standard directory that is on your LD_LIBRARY_PATH.

You can either paste this into a CMakeCache.txt or change the settings manually by running ccmake.

# This is the Kickstart CMakeCache file for the Debian build of ITK.
# Only those settings that are changed from the default are specified.
  
// For some reason it defaults to c++
CMAKE_CXX_COMPILER:STRING=g++
  
// Don't build examples now (let the user later)
BUILD_EXAMPLES:BOOL=OFF
  
// Build ITK with shared libraries
BUILD_SHARED_LIBS:BOOL=ON
  
// Don't bother building the testing tree
BUILD_TESTING:BOOL=OFF
  
// Give us an optimised release build
CMAKE_BUILD_TYPE:STRING=RELWITHDEBINFO
  
// Install path prefix, prepended onto install directories
CMAKE_INSTALL_PREFIX:PATH=/usr
  
// The code still uses the older #include <iostream.h> style
CMAKE_CXX_FLAGS:STRING=-Wno-deprecated 
  
// We do not want rpath enabled
CMAKE_SKIP_RPATH:BOOL=ON
  
// We haven't packaged this (yet)
ITK_DATA_ROOT:PATH=ITK_DATA_ROOT_NOTFOUND
  
// Use the system libraries for these
ITK_USE_SYSTEM_JPEG:BOOL=ON
ITK_USE_SYSTEM_PNG:BOOL=ON
ITK_USE_SYSTEM_TIFF:BOOL=ON
ITK_USE_SYSTEM_ZLIB:BOOL=ON
  
//Build cswig Python wrapper support
ITK_CSWIG_PYTHON:BOOL=ON
  
//Build cswig Tcl wrapper support
ITK_CSWIG_TCL:BOOL=ON

Ebuild for Gentoo Linux

For Gentoo Linux you can use the ebuild shown below, or alternatively download it here. Please notice that this ebuild does not build the Python/TCL wrapper support.

# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

inherit distutils eutils flag-o-matic toolchain-funcs versionator

DESCRIPTION="NLM  Insight Segmentation and Registration Toolkit"
HOMEPAGE="http://www.itk.org"
SRC_URI="mirror://sourceforge/${PN}/InsightToolkit-${PV}.tar.gz"

LICENSE="BSD"
KEYWORD="~x86"
SLOT="0"
KEYWORDS="~x86"
IUSE="patented"

DEPEND="sys-libs/zlib
                media-libs/jpeg
                media-libs/libpng
                media-libs/tiff"
RDEPEND="${RDEPEND}
                 >=dev-util/cmake-1.8"

MY_PV=$(replace_all_version_separators '-')
S=${WORKDIR}/InsightToolkit-${MY_PV}

src_compile() {

        # Out of source build
        mkdir my_build && cd my_build

        # Install path prefix, prepended onto install directories
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DCMAKE_INSTALL_PREFIX:PATH=/usr"
        # Build ITK with shared libraries
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DBUILD_SHARED_LIBS:BOOL=ON"
        # Don't bother building the testing tree
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DBUILD_TESTING:BOOL=OFF"
        # Don't build examples now (let the user later)
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DBUILD_EXAMPLES:BOOL=OFF"
        # Give us an optimised release build
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DCMAKE_BUILD_TYPE:STRING=RELWITHDEBINFO"
        # We do not want rpath enabled
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DCMAKE_SKIP_RPATH:BOOL=ON"
        # Use the system libraries for these
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_SYSTEM_JPEG:BOOL=ON"
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_SYSTEM_PNG:BOOL=ON"
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_SYSTEM_TIFF:BOOL=ON"
        CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_SYSTEM_ZLIB:BOOL=ON"

        use patented && CMAKE_VARIABLES="${CMAKE_VARIABLES} -DITK_USE_PATENTED:BOOL=ON"

        # Run CMake twice to configure properly with CMake 2.2.x
        cmake ${CMAKE_VARIABLES} .. && cmake ${CMAKE_VARIABLES} .. \
                || die "CMake configuration failed"

        emake || die "emake failed"
}

src_install() {
        # Return to our build directory
        cd my_build

        # Do install
        make DESTDIR=${D} install || die "make install failed"

        # Fix configuration file
        sed -i -e "s:${D}:/:g" ${D}/usr/lib/${PN}/ITKConfig.cmake
        
        LDPATH="/usr/lib/InsightToolkit"
        echo "LDPATH=${LDPATH}" > ${T}/40${PN}
        echo "ITK_DATA_ROOT=/usr/share/${PN}/data" >> ${T}/40${PN}
        doenvd ${T}/40${PN}
}

pkg_postinst() {
        if use patented; then
                ewarn "Using patented code in ITK may require a license."
                ewarn "For more information, please read:"
                ewarn "http://www.vtk.org/Wiki/ITK_Patent_Bazaar"
        fi
}

CMake Configuration for Mac OS X

This configuration has been tested on Mac OS X Panther 10.3, with XCode 1.1 and 1.2. It presumes that Fink has been installed, with the following libraries in the default location under /sw:

  • libjpeg
  • libtiff
  • libpng
  • libzilb
//Name of build on the dashboard
BUILDNAME:STRING=Darwin-g++
 
//Build source documentation using doxygen
BUILD_DOXYGEN:BOOL=OFF
 
//Build the Examples directory.
BUILD_EXAMPLES:BOOL=OFF
 
//Build ITK with shared libraries.
BUILD_SHARED_LIBS:BOOL=ON
 
//Build the testing tree.
BUILD_TESTING:BOOL=OFF
 
//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
//
CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
 
//C++ compiler
CMAKE_CXX_COMPILER:STRING=g++
 
//Use the system's jpeg library.
ITK_USE_SYSTEM_JPEG:BOOL=ON
 
//Use the system's png library.
ITK_USE_SYSTEM_PNG:BOOL=ON
 
//Use the system's tiff library.
ITK_USE_SYSTEM_TIFF:BOOL=ON
 
//Use an outside build of VXL.
ITK_USE_SYSTEM_VXL:BOOL=OFF
 
//Use the system's zlib library.
ITK_USE_SYSTEM_ZLIB:BOOL=ON
 
//What is the path where the file jpeglib.h can be found
JPEG_INCLUDE_DIR:PATH=/sw/include
 
//Where can the jpeg library be found
JPEG_LIBRARY:FILEPATH=/sw/lib/libjpeg.dylib
 
//Where can the png library be found
PNG_LIBRARY:FILEPATH=/sw/lib/libpng.dylib
 
//What is the path where the file png.h can be found
PNG_PNG_INCLUDE_DIR:PATH=/sw/include
 
//What is the path where the file tiff.h can be found
TIFF_INCLUDE_DIR:PATH=/sw/include
 
//Where can the tiff library be found
TIFF_LIBRARY:FILEPATH=/sw/lib/libtiff.dylib
 
//What is the path where the file zlib.h can be found
ZLIB_INCLUDE_DIR:PATH=/usr/include
 
//Where can the z library be found
ZLIB_LIBRARY:FILEPATH=/usr/lib/libz.dylib

CMake Configuration for Solaris

CMake Configuration for AIX

CMake Configuration for Windows

Using a predefined Configuration

CMake can be run interactively to configure a build, in which case all settings begin with system defaults (as determined by CMakeLists.txt) and the user customises them.

Alternatively, a predefined configuration (such as those shown above) can be provided, which will provide initial settings for the build (also known as priming). By creating a file called CMakeCache.txt in the top level of the build directory, the settings defined therein will be used to override the default settings for the build.

Wrapping ITK

ITK can be wrapped for several different languages such as Python, Tcl and Java.



ITK: [Welcome | Site Map]