CMakeLists.txt -> File in each directory that contains classes, exe, etc CMakeLists.txt contains the following: # build targets WIN32_CLASSES = UNIX_CLASSES = ABSTRACT_CLASSES = SUBDIRS = EXECUTABLES = # make flags # make flags can use these varibles: # ${CMAKE_BINARY_DIR} The root of the build tree where the binaries are # ${CMAKE_SOURCE_ROOT} The root of the source tree where configure is INCLUDE_DIRECTORIES = LINK_DIRECTORIES = LINK_LIBRARIES = # use the same name as ME = WIN32_LIBRARIES = UNIX_LIBRARIES = # name of the library to build ME = # add make commands BEGIN MAKE VERBATIM ... # copy stuff into CMakeTargets.make directly LOCAL_BUILD_TARGETS = // These are done first before anything else END MAKE VERBATIM TEMPLATE_INSTANCE_DIR = Windows / Visual Studio 6.0 programs CMakeSetup.exe -> window MFC based GUI for configure on windows CMakeSetupCMD.exe -> windows command line version of CMakeConfigure To Build on Windows: load CMake/Source/CMakeSetup.dsw Build it Run it Specify paths Load ITK.dsw Build Common, Numerics, then any of the many executables, or do a Batch build with debug only. Unix scripts and programs: configure -> run on unix to configure for build CMakeBuildTargets -> Unix program to read CMakeLists.txt and generate CMakeTargets.make makefile fragments: CMakeMaster.make -> main file to be included by makefiles CMakeVariables.make -> all make varibles are set in this file CMakeRules.make -> All build rules are here (except Simple Rules) CMakeSimpleRules.make -> simple build rules for .o to .cxx, this is separate to be able to build CMakeBuildTargets itself. CMakeLocal.make -> Place for hand configuration CMakeTargets.make -> generated rules for make style build in each directory MakefileTemplate.make -> master makefile template used by configure to generate Makefiles Unix install: In place: ./configure make Other directory: mkdir Insight-build cd Insight-build ../Insight/configure make TODO: Add include and directories to the build on windows. For unix just add them to the CMakeLocal.make.in Add a --with idea, sets a #define in the config.h file Change ME to LIBRARY, and add PROJECT=