X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=CMakeLists.txt;h=82cc483b450d28c8d0aadc64ea7dc611fb3b86b1;hb=f58a42ca9deb4b190a83787ce51622cdcefab9fc;hp=76b21ce10d7efb99d67b0bb61fddbc09a66cd609;hpb=e7b04cfe67f670cb8da522890df8c81b80770bda;p=cpPlugins.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 76b21ce..82cc483 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,166 +1,75 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +CMAKE_MINIMUM_REQUIRED(VERSION 3.0) -## ============ -## = Policies = -## ============ +## ======================== +## == Project definition == +## ======================== -SET( - policies - CMP0015 - CMP0020 - CMP0042 - ) -FOREACH(policy ${policies}) - IF(POLICY ${policy}) - CMAKE_POLICY(SET ${policy} NEW) - ENDIF(POLICY ${policy}) -ENDFOREACH(policy) +SET(prj_NAME cpPlugins) +SET(prj_MAJOR_VERSION 0) +SET(prj_MINOR_VERSION 1) +SET(prj_RELEASE_VERSION 0) + +## ========================== +## == Some useful policies == +## ========================== -## ================ -## = Project name = -## ================ +SET(_policies CMP0015 CMP0020 CMP0042) +FOREACH(_p ${_policies}) + IF(POLICY ${_p}) + CMAKE_POLICY(SET ${_p} NEW) + ENDIF(POLICY ${_p}) +ENDFOREACH(_p) -PROJECT(cpPlugins) -SET(prj_MAJOR_VERSION "0") -SET(prj_MINOR_VERSION "0") -SET(prj_RELEASE_VERSION "1") +## =========================== +## == Project configuration == +## =========================== + +PROJECT(${prj_NAME}) SET( prj_VERSION "${prj_MAJOR_VERSION}.${prj_MINOR_VERSION}.${prj_RELEASE_VERSION}" ) +SET(prj_SHORT_VERSION "${prj_MAJOR_VERSION}") -## =========== -## = Options = -## =========== +## ===================================== +## == Functions, packages and options == +## ===================================== +INCLUDE(cmake/Restrictions.cmake) +INCLUDE(cmake/Options.cmake) +INCLUDE(cmake/Functions.cmake) +INCLUDE(cmake/KitwareTools.cmake) OPTION(USE_QT4 "Build Qt4-based code" OFF) -OPTION(BUILD_EXAMPLES "Build examples" OFF) - -OPTION(BUILD_SHARED_LIBRARIES "Build libraries as shared" OFF) -IF(BUILD_SHARED_LIBRARIES) - SET(LIBRARY_TYPE SHARED) -ELSE(BUILD_SHARED_LIBRARIES) - SET(LIBRARY_TYPE STATIC) -ENDIF(BUILD_SHARED_LIBRARIES) - -## ======================== -## = Packages and options = -## ======================== - -# it seems that by default on Visual Studio Compiler supports c++11, so it only need to be test on other O.S. - if(NOT MSVC) - INCLUDE(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) - CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) - IF(COMPILER_SUPPORTS_CXX11) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - ELSEIF(COMPILER_SUPPORTS_CXX0X) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") - ELSE() - MESSAGE(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") - ENDIF() -endif(NOT MSVC) - -# Prepare header to build shared libs (windows) -INCLUDE(GenerateExportHeader) - -# Find ITK and VTK -FIND_PACKAGE(ITK REQUIRED) -FIND_PACKAGE(VTK REQUIRED) - -INCLUDE(${ITK_USE_FILE}) -INCLUDE(${VTK_USE_FILE}) - -# Do not use itk-vtk glue --> problems ahead!!! -IF(ITKVtkGlue_LOADED) - MESSAGE(FATAL_ERROR "ITKVtkGlue module is available. Please re-compile your ITK without it. It could lead to nasty compilation problems... Just waiting for Kitware to solve it.") -ENDIF(ITKVtkGlue_LOADED) - -SET(QT4_FOUND "0") +INCLUDE(cmake/Qt4Tools.cmake) IF(USE_QT4) - FIND_PACKAGE(Qt4 REQUIRED) - INCLUDE(${QT_USE_FILE}) - - ## Check for required vtk-qt4 modules SET( - vtk_required_modules - vtkGUISupportQt - vtkGUISupportQtOpenGL + cpPlugins_Qt4_VTKWidget QVTKWidget + CACHE STRING "Base Qt4-based vtkRenderWindow" ) - FOREACH(vtk_module ${vtk_required_modules}) - IF(NOT ${vtk_module}_LOADED) - MESSAGE( - FATAL_ERROR - "${vtk_module} module is required but not available." - ) - SET(QT4_FOUND "0") - ENDIF(NOT ${vtk_module}_LOADED) - ENDFOREACH(vtk_module) - SET(QT4_FOUND "1") ENDIF(USE_QT4) -## ================================================ -## = Do not allow to build inside the source tree = -## ================================================ - -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}) - -## ===================================== -## = Where to put executables and libs = -## ===================================== - -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 = -## ============================== +## =========================== +## == Use all valid subdirs == +## =========================== -INCLUDE_DIRECTORIES( - ${PROJECT_SOURCE_DIR}/lib - ${PROJECT_SOURCE_DIR}/lib/third_party - ${PROJECT_SOURCE_DIR}/lib/third_party/ItkVtkGlue - ${PROJECT_BINARY_DIR}/lib - ${PROJECT_BINARY_DIR}/lib/third_party - ${PROJECT_BINARY_DIR}/lib/third_party/ItkVtkGlue +SET( + _include_dirs + . + lib + lib/Itk2Vtk + lib/Instances ) -IF(WIN32 OR APPLE) +FOREACH(_dir ${_include_dirs}) INCLUDE_DIRECTORIES( - ${PROJECT_SOURCE_DIR}/lib/third_party/glext + ${PROJECT_SOURCE_DIR}/${_dir} + ${PROJECT_BINARY_DIR}/${_dir} ) -ENDIF(WIN32 OR APPLE) - -## ======================= -## = Local bash commands = -## ======================= -SET( - bash_PROGRAMS - cpPlugins_createHost - ) - -FOREACH(prog ${bash_PROGRAMS}) - IF(MSVC) - SET(${prog}_APP ${PROJECT_BINARY_DIR}/$(ConfigurationName)/${prog}) - ELSE(MSVC) - SET(${prog}_APP ${PROJECT_BINARY_DIR}/${prog}) - ENDIF(MSVC) -ENDFOREACH(prog) +ENDFOREACH(_dir) ## =========================== -## = Subdirs containing code = +## == Build different parts == ## =========================== -SUBDIRS( - cmake - lib - appli - ) +SUBDIRS(appli cmake lib plugins) ## eof - $RCSfile$