From a881fe86daae72ca0c4c7b20edf2d23e70160aee Mon Sep 17 00:00:00 2001 From: Kasper Marstal <kaspermarstal@gmail.com> Date: Thu, 13 Aug 2015 15:03:07 +0200 Subject: [PATCH] STYLE: ELASTIX-1 Improve build system naming conventions --- CMake/elxCompilerFlags.cmake | 2 +- ...ules.cmake => elxITKRequiredModules.cmake} | 0 CMake/elxWinConfig.cmake | 2 ++ ...fig.cmake => elxWinConfigGoogleTest.cmake} | 3 ++- CMakeLists.txt | 23 ++++++++++++------- SuperBuild/CMakeLists.txt | 9 +++++--- SuperBuild/Elastix.cmake | 2 +- 7 files changed, 27 insertions(+), 14 deletions(-) rename CMake/{elxRequiredITKModules.cmake => elxITKRequiredModules.cmake} (100%) rename CMake/{elxGoogleTestWinConfig.cmake => elxWinConfigGoogleTest.cmake} (72%) diff --git a/CMake/elxCompilerFlags.cmake b/CMake/elxCompilerFlags.cmake index 171a36b1..8728ded6 100644 --- a/CMake/elxCompilerFlags.cmake +++ b/CMake/elxCompilerFlags.cmake @@ -9,4 +9,4 @@ set( CompilerFlags CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO -) +) \ No newline at end of file diff --git a/CMake/elxRequiredITKModules.cmake b/CMake/elxITKRequiredModules.cmake similarity index 100% rename from CMake/elxRequiredITKModules.cmake rename to CMake/elxITKRequiredModules.cmake diff --git a/CMake/elxWinConfig.cmake b/CMake/elxWinConfig.cmake index 35dab0a3..c9a8eb73 100644 --- a/CMake/elxWinConfig.cmake +++ b/CMake/elxWinConfig.cmake @@ -1,3 +1,5 @@ +# Visual Studio complains if paths are too long + string( LENGTH "${CMAKE_CURRENT_SOURCE_DIR}" n ) if( n GREATER 50 ) message( diff --git a/CMake/elxGoogleTestWinConfig.cmake b/CMake/elxWinConfigGoogleTest.cmake similarity index 72% rename from CMake/elxGoogleTestWinConfig.cmake rename to CMake/elxWinConfigGoogleTest.cmake index 4b119803..75a5ac06 100644 --- a/CMake/elxGoogleTestWinConfig.cmake +++ b/CMake/elxWinConfigGoogleTest.cmake @@ -1,5 +1,6 @@ # GoogleTest needs static linking -include( ${CMAKE_SOURCE_DIR}/CMake/elxCompilerFlags.cmake ) + +include( elxCompilerFlags.cmake ) foreach( CompilerFlag ${CompilerFlags} ) string( REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}" ) endforeach() diff --git a/CMakeLists.txt b/CMakeLists.txt index d15c9c47..c5a3e96f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,10 @@ cmake_minimum_required( VERSION 2.8 ) +# Include SuperElastix CMake scripts +list( APPEND CMAKE_MODULE_PATH + "${CMAKE_CURRENT_SOURCE_DIR}/CMake" +) + if( CMAKE_HOST_WIN32 ) include( elxWinConfig.cmake ) endif() @@ -13,7 +18,7 @@ project( Elastix ) find_package( ITK REQUIRED ) set( ITK_NO_IO_FACTORY_REGISTER_MANAGER 1 ) include( ${ITK_USE_FILE} ) -include( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/elxRequiredITKModules.cmake" ) +include( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/elxITKRequiredModules.cmake" ) #--------------------------------------------------------------------- # Build Elastix @@ -21,14 +26,16 @@ include( "${CMAKE_CURRENT_SOURCE_DIR}/CMake/elxRequiredITKModules.cmake" ) #--------------------------------------------------------------------- # Testing -# Do not build tests by default since this requires GoogleTest submodule -# to be initialized. Otherwise users may see FATAL_ERRORs out of the box. -# The SuperBuild will correctly initialize the GoogleTest submodule and -# build tests by default. -option( ELASTIX_BUILD_TESTING "Enable building tests." OFF ) +# Build tests by default +option( ELASTIX_BUILD_TESTING "Enable building tests." ON ) + +# ExternalData module requires newer CMake versions +if( CMAKE_VERSION VERSION_LESS 2.8.11 ) + set( ELASTIX_BUILD_TESTING OFF FORCE ) + message( STATUS "ELASTIX_BUILD_TESTING was set to OFF because CMake version is less than 2.8.11") +endif() if( ELASTIX_BUILD_TESTING ) - option( ELASTIX_BUILD_BENCHMARKING "Enable building benchmarks." OFF ) enable_testing() add_subdirectory( Testing ) endif() @@ -40,5 +47,5 @@ mark_as_advanced( ELASTIX_BUILD_DOXYGEN ) option( ELASTIX_BUILD_DOXYGEN "Enable building Doxygen documentation." OFF ) mark_as_advanced( ELASTIX_BUILD_READTHEDOCS ) -option( ELASTX_BUILD_READTHEDOCS "Enable building readthedocs.org documentation." OFF ) +option( ELASTIX_BUILD_READTHEDOCS "Enable building readthedocs.org documentation." OFF ) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 15dd3d89..cff7bb5a 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required( VERSION 2.8 ) #--------------------------------------------------------------------- -project( elastixSuperBuild ) +project( ElastixSuperBuild ) find_package( Git REQUIRED ) @@ -13,6 +13,8 @@ set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ) +set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "SuperBuild install directory" FORCE) + #--------------------------------------------------------------------- # Elastix SuperBuild configuration @@ -30,10 +32,11 @@ option( ELASTIX_BUILD_TESTING "Enable building tests." ON ) if( ELASTIX_BUILD_TESTING ) option( ELASTIX_BUILD_BENCHMARKING "Enable building benchmarks." ON ) + option( ELASTIX_BUILD_DASHBOARD "Enable building benchmarks." ON ) endif() #--------------------------------------------------------------------- -# Build ITK as external project +# Build ITK set( ITK_VERSION_MAJOR "4" ) set( ITK_VERSION_MINOR "7" ) @@ -52,7 +55,7 @@ else() endif() #--------------------------------------------------------------------- -# Build Elastix as an external project +# Build Elastix include( Elastix ) diff --git a/SuperBuild/Elastix.cmake b/SuperBuild/Elastix.cmake index 6afad940..d6bf5517 100644 --- a/SuperBuild/Elastix.cmake +++ b/SuperBuild/Elastix.cmake @@ -4,11 +4,11 @@ ExternalProject_Add( ${proj} DOWNLOAD_COMMAND "" SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.. BINARY_DIR ${proj}-build - INSTALL_DIR ${CMAKE_INSTALL_PREFIX} CMAKE_ARGS --no-warn-unused-cli -DELASTIX_BUILD_TESTING:BOOL=${ELASTIX_BUILD_TESTING} -DELASTIX_BUILD_BENCHMARKING:BOOL=${ELASTIX_BUILD_BENCHMARKING} + -DELASTIX_BUILD_DASHBOARD:BOOL=${ELASTIX_BUILD_DASHBOARD} -DITK_DIR:PATH=${ITK_DIR} DEPENDS ${ELASTIX_DEPENDENCIES} INSTALL_COMMAND "" -- GitLab