Difference between revisions of "ITK/Configuring and Building"

From KitwarePublic
< ITK
Jump to navigationJump to search
m
Line 26: Line 26:
  # This is the Kickstart CMakeCache file for the Debian build of ITK.
  # This is the Kickstart CMakeCache file for the Debian build of ITK.
  # Only those settings that are changed from the default are specified.
  # Only those settings that are changed from the default are specified.
  &nbsp;
// For some reason it defaults to c++
CMAKE_CXX_COMPILER:STRING=g++
  &nbsp;
// Don't build examples now (let the user later)
BUILD_EXAMPLES:BOOL=OFF
  &nbsp;
// Build ITK with shared libraries
BUILD_SHARED_LIBS:BOOL=ON
  &nbsp;
// Don't bother building the testing tree
BUILD_TESTING:BOOL=OFF
  &nbsp;
// Give us an optimised release build
CMAKE_BUILD_TYPE:STRING=RELWITHDEBINFO
  &nbsp;
// Install path prefix, prepended onto install directories
CMAKE_INSTALL_PREFIX:PATH=/usr
  &nbsp;
// The code still uses the older #include <iostream.h> style
CMAKE_CXX_FLAGS:STRING=-Wno-deprecated
  &nbsp;
// We do not want rpath enabled
CMAKE_SKIP_RPATH:BOOL=ON
  &nbsp;
// We haven't packaged this (yet)
ITK_DATA_ROOT:PATH=ITK_DATA_ROOT_NOTFOUND
  &nbsp;
// 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
  &nbsp;
//Build cswig Python wrapper support
ITK_CSWIG_PYTHON:BOOL=ON
  &nbsp;
//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 [http://www.elreki.net/gentoo/itk-2.4.1.ebuild here]. This ebuild will pull in all required dependencies. 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 [http://fink.sourceforge.net/ Fink] has been installed, with the following libraries in the default location under <tt>/sw</tt>:
* libjpeg
* libtiff
* libpng
* libzilb
//Name of build on the dashboard
BUILDNAME:STRING=Darwin-g++
&nbsp;
//Build source documentation using doxygen
BUILD_DOXYGEN:BOOL=OFF
&nbsp;
//Build the Examples directory.
BUILD_EXAMPLES:BOOL=OFF
&nbsp;
//Build ITK with shared libraries.
BUILD_SHARED_LIBS:BOOL=ON
&nbsp;
//Build the testing tree.
BUILD_TESTING:BOOL=OFF
&nbsp;
//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
&nbsp;
//C++ compiler
CMAKE_CXX_COMPILER:STRING=g++
&nbsp;
//Use the system's jpeg library.
ITK_USE_SYSTEM_JPEG:BOOL=ON
&nbsp;
//Use the system's png library.
ITK_USE_SYSTEM_PNG:BOOL=ON
&nbsp;
//Use the system's tiff library.
ITK_USE_SYSTEM_TIFF:BOOL=ON
&nbsp;
//Use an outside build of VXL.
ITK_USE_SYSTEM_VXL:BOOL=OFF
&nbsp;
//Use the system's zlib library.
ITK_USE_SYSTEM_ZLIB:BOOL=ON
&nbsp;
//What is the path where the file jpeglib.h can be found
JPEG_INCLUDE_DIR:PATH=/sw/include
&nbsp;
//Where can the jpeg library be found
JPEG_LIBRARY:FILEPATH=/sw/lib/libjpeg.dylib
&nbsp;
//Where can the png library be found
PNG_LIBRARY:FILEPATH=/sw/lib/libpng.dylib
&nbsp;
//What is the path where the file png.h can be found
PNG_PNG_INCLUDE_DIR:PATH=/sw/include
&nbsp;
//What is the path where the file tiff.h can be found
TIFF_INCLUDE_DIR:PATH=/sw/include
&nbsp;
//Where can the tiff library be found
TIFF_LIBRARY:FILEPATH=/sw/lib/libtiff.dylib
&nbsp;
//What is the path where the file zlib.h can be found
ZLIB_INCLUDE_DIR:PATH=/usr/include
&nbsp;
//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 <tt>CMakeLists.txt</tt>) 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 <tt>CMakeCache.txt</tt> 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 Java Wrapping|Java wrapping]] guide
{{ITK/Template/Footer}}

Revision as of 18:27, 18 April 2007

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.