diff --git a/CMake/elxModules.cmake b/CMake/elxModules.cmake index 0b993b9570fca4351a47dacadb59c42e476d1f3b..7ba40b4dcd590ce7de87e6203ca71fef82ffdd5f 100644 --- a/CMake/elxModules.cmake +++ b/CMake/elxModules.cmake @@ -6,7 +6,7 @@ macro( _elxmodule_check_name MODULE ) message( FATAL_ERROR "Invalid module name: ${MODULE}" ) endif() - list( FIND ELXMODULE_ALL "${MODULE}" MODULE_FOUND ) + list( FIND ELASTIX_MODULES "${MODULE}" MODULE_FOUND ) if( ${MODULE_FOUND} EQUAL -1 ) message( FATAL_ERROR "Module not found: ${MODULE}") endif() @@ -16,7 +16,7 @@ macro( _elxmodule_enable MODULE ) _elxmodule_check_name( ${MODULE} ) if( NOT ${MODULE}_ENABLED ) - set( USE_${MODULE} ON ) + set( ELASTIX_USE_${MODULE} ON ) include( ${${MODULE}_FILE} ) @@ -24,14 +24,9 @@ macro( _elxmodule_enable MODULE ) include_directories( ${${MODULE}_INCLUDE_DIRS} ) endif() - add_subdirectory( ${${MODULE}_SOURCE_DIR} ) - if( ${MODULE}_LIBRARIES ) link_directories( ${${MODULE}_LIBRARY_DIRS} ) - - list( APPEND ELASTIX_LIBRARIES - ${${MODULE}_LIBRARIES} - ) + list( APPEND ELASTIX_LIBRARIES ${${MODULE}_LIBRARIES} ) endif() # TODO: Add recursive dependency walk @@ -43,30 +38,32 @@ macro( _elxmodule_disable MODULE ) endmacro() macro( _elxmodules_initialize ) - set( ELXMODULE_ALL ) + set( ELASTIX_LIBRARIES ) + set( ELASTIX_MODULES ) - file( GLOB MODULE_FILES RELATIVE "${CMAKE_SOURCE_DIR}" + file( GLOB_RECURSE MODULE_FILES RELATIVE "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/Modules/*/elxModule*.cmake" ) message( STATUS "Found the following elastix modules:") foreach( MODULE_FILE ${MODULE_FILES}) - get_filename_component( MODULE_PATH ${MODULE_FILE} PATH ) - get_filename_component( MODULE ${MODULE_FILE} NAME_WE ) - message( STATUS " ${MODULE}" ) + get_filename_component( MODULE_NAME ${MODULE_FILE} NAME_WE ) + get_filename_component( ${MODULE_NAME}_PATH ${MODULE_FILE} PATH ) + + message( STATUS " ${MODULE_NAME}" ) - option( "USE_${MODULE}" OFF ) - set( "${MODULE}_FILE" ${CMAKE_SOURCE_DIR}/${MODULE_FILE} ) - set( "${MODULE}_ENABLED" OFF ) + option( "ELASTIX_USE_${MODULE_NAME}" OFF ) + set( "${MODULE_NAME}_FILE" ${CMAKE_SOURCE_DIR}/${MODULE_FILE} ) + set( "${MODULE_NAME}_ENABLED" OFF ) - set( ${MODULE}_SOURCE_DIR ${CMAKE_SOURCE_DIR}/${MODULE_PATH} ) - set( ${MODULE}_BINARY_DIR ${CMAKE_BINARY_DIR}/${MODULE_PATH} ) + set( ${MODULE_NAME}_SOURCE_DIR ${CMAKE_SOURCE_DIR}/${${MODULE_NAME}_PATH} ) + set( ${MODULE_NAME}_BINARY_DIR ${CMAKE_BINARY_DIR}/${${MODULE_NAME}_PATH} ) - set( ${MODULE}_INCLUDE_DIRS ) - set( ${MODULE}_LIBRARY_DIRS ) - set( ${MODULE}_LIBRARIES ) + set( ${MODULE_NAME}_INCLUDE_DIRS ) + set( ${MODULE_NAME}_LIBRARY_DIRS ) + set( ${MODULE_NAME}_LIBRARIES ) - list(APPEND ELXMODULE_ALL ${MODULE} ) + list(APPEND ELASTIX_MODULES ${MODULE_NAME} ) endforeach() endmacro() @@ -79,9 +76,3 @@ macro( elxmodule_enable MODULE ) _elxmodule_enable( ${MODULE} ) endmacro() -macro( elxmodule_compile MODULE ) - project( "${MODULE}" ) - add_library( ${MODULE} STATIC "${${MODULE}_SOURCE_FILES}" ) - target_link_libraries( ${MODULE} ${ELASTIX_LIBRARIES} ) - list( APPEND ${MODULE}_LIBRARIES ${MODULE} ) -endmacro() diff --git a/CMakeLists.txt b/CMakeLists.txt index eea7b29716863cb1db0a6dd49cd4fbc9f6ef7f3d..0d48eb59510e0d5cd86f11ad52e142e37a9b9612 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,6 @@ include_directories( ${Boost_INCLUDE_DIRS} ) # --------------------------------------------------------------------- # Build Elastix - # For now we just enable all modules include( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/elxModules.cmake" ) elxmodule_enable( elxModuleCore ) diff --git a/Modules/Core/CMakeLists.txt b/Modules/Core/CMakeLists.txt deleted file mode 100644 index 50296aa3c753ddf0818b1b78653383350f700b40..0000000000000000000000000000000000000000 --- a/Modules/Core/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -elxmodule_compile( ${MODULE} ) diff --git a/Modules/Core/elxModuleCore.cmake b/Modules/Core/elxModuleCore.cmake index 585fd509611ea8161fb2f1bc7eaf9b42afdce41f..24e93a5aced2900241b50cb7df509fa9c1c03b00 100644 --- a/Modules/Core/elxModuleCore.cmake +++ b/Modules/Core/elxModuleCore.cmake @@ -1,12 +1,22 @@ -set( ${MODULE}_INCLUDE_DIRS - ${CMAKE_SOURCE_DIR}/${MODULE_PATH}/Common/include - ${CMAKE_SOURCE_DIR}/${MODULE_PATH}/Blueprints/include -) +set( MODULE elxModuleCore ) -set( ${MODULE}_SOURCE_FILES - ${CMAKE_SOURCE_DIR}/${MODULE_PATH}/Blueprints/src/elxBlueprint.cxx +# Export include files +set( ${MODULE}_INCLUDE_DIRS + ${${MODULE}_SOURCE_DIR}/Common/include + ${${MODULE}_SOURCE_DIR}/Blueprints/include ) +# Export libraries set( ${MODULE}_LIBRARIES ${MODULE} ) + +# Module source files +set( ${MODULE}_SOURCE_FILES + ${${MODULE}_SOURCE_DIR}/Blueprints/src/elxBlueprint.cxx +) + +# Compile library + +add_library( ${MODULE} STATIC "${${MODULE}_SOURCE_FILES}" ) +target_link_libraries( ${MODULE} ${ELASTIX_LIBRARIES} ) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 0eb91de3a6f2cccb4fd546af8fb89ce8ff0777aa..b9f5378324b24ff57e6383863baebb262c30ae98 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -54,7 +54,6 @@ if( USE_SYSTEM_ITK ) include( "${CMAKE_CURRENT_SOURCE_DIR}/../CMake/elxRequiredITKModules.cmake" ) else() include( ExternalITK ) - list( APPEND ELASTIX_DEPENDENCIES ITK ) endif() # --------------------------------------------------------------------- @@ -66,7 +65,6 @@ if( USE_SYSTEM_BOOST ) find_package( BOOST REQUIRED graph ) else() include( ExternalBoost ) - list( APPEND ELASTIX_DEPENDENCIES BOOST ) endif() # --------------------------------------------------------------------- diff --git a/SuperBuild/ExternalBoost.cmake b/SuperBuild/ExternalBoost.cmake index e1f1286e9995efa98dce2649cc9aa79a41bebdbf..d710dbac56e1b3311dddbaeb173f3c3b408f75be 100644 --- a/SuperBuild/ExternalBoost.cmake +++ b/SuperBuild/ExternalBoost.cmake @@ -1,4 +1,4 @@ -set( PROJECT BOOST ) +set( proj BOOST ) # Note: It IS important to download different files on different OS's: # on Unix-like systems, we need the file persmissions (only available in the .tar.gz), @@ -19,7 +19,7 @@ else() endif() endif() -set( BOOST_BUILD_DIR "${CMAKE_INSTALL_PREFIX}/${PROJECT}-build/" ) +set( BOOST_BUILD_DIR "${CMAKE_INSTALL_PREFIX}/${proj}-build/" ) ExternalProject_Add( BOOST BUILD_IN_SOURCE 1 @@ -37,3 +37,5 @@ ExternalProject_Add( BOOST ) set( BOOST_ROOT ${BOOST_BUILD_DIR} ) + +list( APPEND ELASTIX_DEPENDENCIES ${proj} ) diff --git a/SuperBuild/ExternalITK.cmake b/SuperBuild/ExternalITK.cmake index 0ee77affea1569d7f946b128e1a7de2756189959..1cd9197d1ed36830d637aa91902ead533944aef3 100644 --- a/SuperBuild/ExternalITK.cmake +++ b/SuperBuild/ExternalITK.cmake @@ -1,13 +1,13 @@ -set( PROJECT ITK ) +set( proj ITK ) set( ITK_REPOSITORY https://github.com/InsightSoftwareConsortium/ITK.git ) set( ITK_TAG "v${ITK_VERSION_STRING}") -ExternalProject_Add( ${PROJECT} +ExternalProject_Add( ${proj} GIT_REPOSITORY ${ITK_REPOSITORY} GIT_TAG ${ITK_TAG} UPDATE_COMMAND "" - SOURCE_DIR ${PROJECT} - BINARY_DIR ${PROJECT}-build + SOURCE_DIR ${proj} + BINARY_DIR ${proj}-build CMAKE_ARGS --no-warn-unused-cli -DBUILD_EXAMPLES:BOOL=OFF @@ -20,5 +20,7 @@ ExternalProject_Add( ${PROJECT} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> ) -ExternalProject_Get_Property( ITK install_dir ) +ExternalProject_Get_Property( ${proj} install_dir ) set( ITK_DIR "${install_dir}/lib/cmake/ITK-${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}" ) + +list( APPEND ELASTIX_DEPENDENCIES ${proj} )