X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=CMakeLists.txt;h=811b889fd7bfb0fa78e75120e6768face6ad2ff5;hb=915fb31735360caba6cc4c59d19cabeb090705b5;hp=5182771b76c9d578a8a444d86ae29c953e1c6e3f;hpb=77129c453531c7db3c41a2a75de6a085ca6668b6;p=FrontAlgorithms.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 5182771..811b889 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,125 +1,63 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +CMAKE_MINIMUM_REQUIRED(VERSION 3.0) -# 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) +## ======================== +## == Project definition == +## ======================== -IF(BUILD_SHARED_LIBS) - SET(LIB_TYPE SHARED) -ELSE(BUILD_SHARED_LIBS) - SET(LIB_TYPE STATIC) -ENDIF(BUILD_SHARED_LIBS) +SET(prj_NAME FrontAlgorithms) +SET(prj_MAJOR_VERSION 0) +SET(prj_MINOR_VERSION 1) +SET(prj_RELEASE_VERSION 0) +SET(_subdirs lib plugins examples) +SET(_policies CMP0015 CMP0020 CMP0042) -## ============ -## = Packages = -## ============ +## ========================== +## == Some useful policies == +## ========================== -INCLUDE(GenerateExportHeader) - -## ------------------------------------------------------------------------- -## If compiling on UNIX-like OS, an error could arise when using ITKVtkGlue: -## -## :0:0: warning: "vtkRenderingCore_AUTOINIT" redefined -## :0:0: note: this is the location of the previous definition -## -## This is avoided by not including the VTK_USE_FILE. Nevertheless, this fails -## on MS-Win OS. -## -## This is due to object factories. To avoid this, and let the project be -## usable on UNIX-like and MS-Win, the way to find ITK and VTK differs -## ------------------------------------------------------------------------- - -IF(UNIX) - FIND_PACKAGE(ITK REQUIRED) - FIND_PACKAGE(VTK REQUIRED) - INCLUDE(${ITK_USE_FILE}) - IF(NOT ITKVtkGlue_LOADED) - MESSAGE(FATAL_ERROR "ITKVtkGlue module is required but not available.") - ENDIF(NOT ITKVtkGlue_LOADED) -ELSE(UNIX) - FIND_PACKAGE(ITK REQUIRED) - INCLUDE(${ITK_USE_FILE}) - IF(ITKVtkGlue_LOADED) - FIND_PACKAGE(VTK REQUIRED) - INCLUDE(${VTK_USE_FILE}) - ELSE(ITKVtkGlue_LOADED) - FIND_PACKAGE(ItkVtkGlue REQUIRED) - INCLUDE(${ItkVtkGlue_USE_FILE}) - SET(Glue ItkVtkGlue) - ENDIF(ITKVtkGlue_LOADED) -ENDIF(UNIX) - -OPTION(USE_cpPlugins "Build cpPlugins based stuff" OFF) -IF(USE_cpPlugins) - FIND_PACKAGE(cpPlugins REQUIRED) -ENDIF(USE_cpPlugins) +FOREACH(_p ${_policies}) + IF(POLICY ${_p}) + CMAKE_POLICY(SET ${_p} NEW) + ENDIF(POLICY ${_p}) +ENDFOREACH(_p) -## ================================================ -## = Do not allow to build inside the source tree = -## ================================================ +## =========================== +## == Project configuration == +## =========================== -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}) +PROJECT(${prj_NAME}) +SET( + prj_VERSION + "${prj_MAJOR_VERSION}.${prj_MINOR_VERSION}.${prj_RELEASE_VERSION}" + ) +SET(prj_SHORT_VERSION "${prj_MAJOR_VERSION}") ## ===================================== -## = Where to put executables and libs = +## == Functions, packages and options == ## ===================================== -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 - ) - -## ============================== -## = Subdirs containing headers = -## ============================== - -INCLUDE_DIRECTORIES( - ${PROJECT_SOURCE_DIR}/lib - ${PROJECT_BINARY_DIR}/lib - ) +FIND_PACKAGE(cpPlugins QUIET) +IF(cpPlugins_DIR) + OPTION(USE_cpPlugins "Build cpPlugins-based code" ON) +ELSE(cpPlugins_DIR) + OPTION(USE_cpPlugins "Build cpPlugins-based code" OFF) + MARK_AS_ADVANCED(FORCE cpPlugins_DIR) +ENDIF(cpPlugins_DIR) +IF(USE_cpPlugins) + FIND_PACKAGE(cpPlugins) + MARK_AS_ADVANCED(CLEAR cpPlugins_DIR) +ENDIF(USE_cpPlugins) +INCLUDE(cmake/BaseConfig.cmake) +INCLUDE(cmake/KitwareTools.cmake) +INCLUDE(cmake/QtTools.cmake) +INCLUDE(cmake/Functions.cmake) ## =========================== -## = Subdirs containing code = +## == Build different parts == ## =========================== -SUBDIRS( - cmake - lib - appli - ) +FOREACH(_s ${_subdirs}) + SUBDIRS(${_s}) +ENDFOREACH(_s) ## eof - $RCSfile$