X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=CMakeLists.txt;h=b2a6a18e5fb3952074891383ece9abf21f8521a3;hb=c2ef02d4e833b1b305a55fdb0ab5c8ed4ff18def;hp=2ad5b5461f0146bc104049eb6a52b80cbc8134dd;hpb=068813ccf0c544f3f70d02790b9fe5cd8e9758b4;p=FrontAlgorithms.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ad5b54..b2a6a18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,102 +1,82 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +cmake_minimum_required(VERSION 3.0) + +## ======================== +## == Project definition == +## ======================== + +set(prj_MAJ_VERSION 0) +set(prj_MIN_VERSION 1) +set(prj_REL_VERSION 0) +set(prj_VERSION "${prj_MAJ_VERSION}.${prj_MIN_VERSION}.${prj_REL_VERSION}") +set(prj_SHORT_VERSION "${prj_MAJ_VERSION}") +project(fpa VERSION ${prj_VERSION}) + +## ========================== +## == Some useful policies == +## ========================== + +set(_policies CMP0015 CMP0020 CMP0042 CMP0053) +foreach(_p ${_policies}) + if(POLICY ${_p}) + cmake_policy(SET ${_p} NEW) + endif(POLICY ${_p}) +endforeach(_p) + +## =============================== +## == Some basic configurations == +## =============================== + +include(cmake/fpaBaseConfig.cmake) + +## ============== +## == Find ITK == +## ============== + +find_package(ITK CONFIG REQUIRED) +include(${ITK_USE_FILE}) + +## ========================= +## == Installation values == +## ========================= + +set(config_install_dir "lib/cmake/${PROJECT_NAME}") +set(include_install_dir "include") +set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") +set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") +set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") +set(targets_export_name "${PROJECT_NAME}Targets") +set(namespace "${PROJECT_NAME}::") -# for CMake 2.6 corrected behaviour (see "cmake --help-policy CMP0003") -IF( - COMMAND cmake_policy AND - ${CMAKE_MAJOR_VERSION} EQUAL 2 AND - ${CMAKE_MINOR_VERSION} GREATER 4 - ) - CMAKE_POLICY(SET CMP0003 NEW) - CMAKE_POLICY(SET CMP0005 NEW) - CMAKE_POLICY(SET CMP0011 NEW) - CMAKE_POLICY(SET CMP0012 NEW) -ENDIF( - COMMAND cmake_policy AND - ${CMAKE_MAJOR_VERSION} EQUAL 2 AND - ${CMAKE_MINOR_VERSION} GREATER 4 - ) - -## ================ -## = Project name = -## ================ - -PROJECT(FrontAlgorithms) -SET(FrontAlgorithms_MAJOR_VERSION "0") -SET(FrontAlgorithms_MINOR_VERSION "0") -SET(FrontAlgorithms_RELEASE_VERSION "1") -SET(FrontAlgorithms_VERSION "${FrontAlgorithms_MAJOR_VERSION}.${FrontAlgorithms_MINOR_VERSION}.${FrontAlgorithms_RELEASE_VERSION}") - -## =========== -## = Options = -## =========== - -OPTION(BUILD_EXAMPLES "Build examples" OFF) -OPTION(BUILD_SHARED_LIBS "Build shared libs" OFF) -OPTION(USE_VTK "Build using VTK" OFF) - -IF(BUILD_SHARED_LIBS) - SET(LIB_TYPE SHARED) -ELSE(BUILD_SHARED_LIBS) - SET(LIB_TYPE STATIC) -ENDIF(BUILD_SHARED_LIBS) - -## ============ -## = Packages = -## ============ - -INCLUDE(GenerateExportHeader) - -FIND_PACKAGE(ITK REQUIRED) -INCLUDE(${ITK_USE_FILE}) - -IF(USE_VTK) - FIND_PACKAGE(VTK REQUIRED) - INCLUDE(${VTK_USE_FILE}) - - OPTION(USE_cpPlugins "Build cpPlugins based stuff" OFF) - IF(USE_cpPlugins) - FIND_PACKAGE(cpPlugins REQUIRED) - ENDIF(USE_cpPlugins) - -ENDIF(USE_VTK) - -## ================================================ -## = Do not allow to build inside the source tree = -## ================================================ +## =========================== +## == Build different parts == +## =========================== -IF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR}) - MESSAGE(FATAL_ERROR "Building in the source tree is not allowed") -ENDIF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR}) +subdirs(examples lib) -## ===================================== -## = Where to put executables and libs = -## ===================================== +## =============================== +## == Global installation rules == +## =============================== -SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) -SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}) -MARK_AS_ADVANCED( - CMAKE_BACKWARDS_COMPATIBILITY - EXECUTABLE_OUTPUT_PATH - LIBRARY_OUTPUT_PATH +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${version_config}" COMPATIBILITY SameMajorVersion ) - -## ============================== -## = Subdirs containing headers = -## ============================== - -INCLUDE_DIRECTORIES( - ${PROJECT_SOURCE_DIR}/lib - ${PROJECT_BINARY_DIR}/lib +configure_package_config_file( + "cmake/${PROJECT_NAME}Config.cmake.in" + "${project_config}" + INSTALL_DESTINATION "${config_install_dir}" ) - -## =========================== -## = Subdirs containing code = -## =========================== - -SUBDIRS( - cmake - lib - appli +install( + FILES + "${project_config}" + "${version_config}" + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/fpaBaseConfig.cmake" + DESTINATION "${config_install_dir}" ) +#install( +# EXPORT "${targets_export_name}" +# NAMESPACE "${namespace}" +# DESTINATION "${config_install_dir}" +# ) ## eof - $RCSfile$