# HG changeset patch # User Vladimir S. FONOV # Date 1326498076 -28800 # Node ID cbe65658451ffdadabccb7c4adcb1118697f053b # Parent 2f9e06536c8b3e3d7035fadb8ce23c411d09ae11 Beautifying minc build diff --git a/CMakeLists.txt b/CMakeLists.txt --- 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 diff --git a/MINC2Config.cmake.in b/MINC2Config.cmake.in 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@") diff --git a/UseMINC2.cmake.in b/UseMINC2.cmake.in 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) +