changeset 2567:cbe65658451f

Beautifying minc build
author Vladimir S. FONOV <vladimir.fonov@gmail.com>
date Sat, 14 Jan 2012 07:41:16 +0800
parents 2f9e06536c8b
children edb1e9f89e31
files CMakeLists.txt MINC2Config.cmake.in UseMINC2.cmake.in
diffstat 3 files changed, 82 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,13 +2,12 @@
 #
 # Andrew Janke - a.janke@gmail.com
 
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 
-PROJECT(libminc2)
+PROJECT(minc2)
 
 SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake-modules")
 
-
 #ADD_SUBDIRECTORY( testdir )
 #ADD_SUBDIRECTORY( doc )
 
@@ -21,10 +20,10 @@
 INCLUDE(CPack)
 
 
-SET(PACKAGE "minc")
+SET(PACKAGE "minc2")
 SET(PACKAGE_BUGREPORT "a.janke@gmail.com")
 
-SET(PACKAGE_NAME "minc")
+SET(PACKAGE_NAME "minc2")
 SET(PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
 SET(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
 
@@ -32,6 +31,7 @@
 OPTION(BUILD_TOOLS      "Build minc tools (mincreshape,mincresample, etc)" ON)
 OPTION(BUILD_CONVERTERS "Build minc conversion programs (mnc2nii, nii2mnc , dcm2mnc...)" ON)
 OPTION(BUILD_EZMINC     "Build C++ interface library EZminc" ON)
+
 IF(BUILD_EZMINC)
 OPTION(BUILD_MINC4ITK   "Build ITK interface" ON)
 ENDIF(BUILD_EZMINC)
@@ -45,7 +45,7 @@
 # check for prereqs
 INCLUDE(CheckFunctionExists)
 
-CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
+CHECK_FUNCTION_EXISTS(mkstemp  HAVE_MKSTEMP)
 CHECK_FUNCTION_EXISTS(strerror HAVE_STRERROR)
 
 INCLUDE(CheckIncludeFiles)
@@ -240,13 +240,58 @@
 
 IF(BUILD_CONVERTERS)
 # and then the conversion subdir
-ADD_SUBDIRECTORY( conversion )
+  ADD_SUBDIRECTORY( conversion )
 ENDIF(BUILD_CONVERTERS)
 
 IF(BUILD_EZMINC)
-ADD_SUBDIRECTORY( ezminc )
+  ADD_SUBDIRECTORY( ezminc )
 ENDIF(BUILD_EZMINC)
 
 IF(BUILD_MINC4ITK AND BUILD_EZMINC)
-ADD_SUBDIRECTORY( minc4itk )
-ENDIF(BUILD_MINC4ITK AND BUILD_EZMINC)
\ No newline at end of file
+  ADD_SUBDIRECTORY( minc4itk )
+ENDIF(BUILD_MINC4ITK AND BUILD_EZMINC)
+
+# config for the build directory
+set(MINC2_USE_FILE_CONFIG   ${CMAKE_CURRENT_BINARY_DIR}/UseMINC2.cmake)
+
+set(MINC2_INCLUDE_DIRS_CONFIG    
+   ${CMAKE_CURRENT_SOURCE_DIR}
+   ${CMAKE_SOURCE_DIR}/libsrc
+   ${CMAKE_SOURCE_DIR}/volume_io/Include
+)
+
+IF(BUILD_MINC2)
+  set(MINC2_INCLUDE_DIRS_CONFIG
+    ${MINC2_INCLUDE_DIRS_CONFIG}
+    ${CMAKE_SOURCE_DIR}/libsrc2
+  )
+ENDIF(BUILD_MINC2)
+
+set(MINC2_LIBRARY_DIRS_CONFIG ${CMAKE_CURRENT_BINARY_DIR})
+
+configure_file(MINC2Config.cmake.in
+  MINC2Config.cmake @ONLY IMMEDIATE)
+
+configure_file(UseMINC2.cmake.in
+  UseMINC2.cmake @ONLY)
+
+# config for install dir
+set(MINC2_USE_FILE_CONFIG "${ITK_INSTALL_PREFIX}/lib/MINC2/UseMINC2.cmake")
+
+set(MINC2_INCLUDE_DIRS_CONFIG    
+   ${ITK_INSTALL_PREFIX}/include
+)
+
+set(MINC2_LIBRARY_DIRS_CONFIG ${ITK_INSTALL_PREFIX}/lib)
+
+configure_file(MINC2Config.cmake.in
+  CMakeFiles/MINC2Config.cmake @ONLY IMMEDIATE)
+
+configure_file(UseMINC2.cmake.in
+  CMakeFiles/UseMINC2.cmake @ONLY)
+
+install(FILES CMakeFiles/UseMINC2.cmake CMakeFiles/MINC2Config.cmake
+  DESTINATION lib/MINC2
+  COMPONENT Development)
+
+# config for the install directory
new file mode 100644
--- /dev/null
+++ b/MINC2Config.cmake.in
@@ -0,0 +1,7 @@
+set(HAVE_MINC2    @BUILD_MINC2@)
+set(HAVE_EZMINC   @BUILD_EZMINC@)
+set(HAVE_MINC4ITK @BUILD_MINC4ITK@)
+
+set(MINC2_INCLUDE_DIRS "@MINC2_INCLUDE_DIRS_CONFIG@")
+set(MINC2_LIBRARY_DIRS "@MINC2_LIBRARY_DIRS_CONFIG@")
+set(MINC2_USE_FILE     "@MINC2_USE_FILE_CONFIG@")
new file mode 100644
--- /dev/null
+++ b/UseMINC2.cmake.in
@@ -0,0 +1,20 @@
+include_directories(${MINC2_INCLUDE_DIRS})
+link_directories(${MINC2_LIBRARY_DIRS})
+
+
+FIND_PACKAGE(NETCDF REQUIRED)
+INCLUDE_DIRECTORIES( ${NETCDF_INCLUDE_DIR} )
+
+if(HAVE_MINC2)
+  FIND_PACKAGE(HDF5 REQUIRED)
+  FIND_PACKAGE(ZLIB REQUIRED)
+  INCLUDE_DIRECTORIES( ${HDF5_INCLUDE_DIR} )
+  
+  SET(MINC2 "1")
+  ADD_DEFINITIONS( -DMINC2 )
+  
+  SET(MINC_LIBRARIES volume_io2 minc2 netcdf hdf5 z)
+else(HAVE_MINC2)
+  SET(MINC_LIBRARIES volume_io minc netcdf )
+endif(HAVE_MINC2)
+