X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=CMakeLists.txt;h=823705ed308fc168bc3f9b7f8cc7c865437d136d;hb=28ab3376dc62aa38157d28a257a837ea9ff96c02;hp=e4f2e37e0ef5d5cbc9b60406c5414ede44546a0c;hpb=60ecd2494207dc95b1bad56976da57d109b6ef4e;p=cpPlugins.git diff --git a/CMakeLists.txt b/CMakeLists.txt index e4f2e37..823705e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,33 +1,30 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -# 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 +## ============ +## = Policies = +## ============ + +SET( + policies + CMP0015 + CMP0020 + CMP0042 ) +FOREACH(policy ${policies}) + IF(POLICY ${policy}) + CMAKE_POLICY(SET ${policy} NEW) + ENDIF(POLICY ${policy}) +ENDFOREACH(policy) ## ================ ## = Project name = ## ================ PROJECT(cpPlugins) -SET(prj_MAJOR_VERSION "0") -SET(prj_MINOR_VERSION "0") -SET(prj_RELEASE_VERSION "1") -SET( - prj_VERSION - "${prj_MAJOR_VERSION}.${prj_MINOR_VERSION}.${prj_RELEASE_VERSION}" - ) +SET(prj_MAJ_VER "0") +SET(prj_MIN_VER "0") +SET(prj_REL_VER "2") +SET(prj_VERSION "${prj_MAJ_VER}.${prj_MIN_VER}.${prj_REL_VER}") ## =========== ## = Options = @@ -36,44 +33,69 @@ SET( OPTION(USE_QT4 "Build Qt4-based code" OFF) OPTION(BUILD_EXAMPLES "Build examples" OFF) +SET(LIBRARY_TYPE SHARED) + ## ======================== ## = Packages and options = ## ======================== +# Force c++11 language version +# NOTE: 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) + IF(COMPILER_SUPPORTS_CXX11) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + ELSE(COMPILER_SUPPORTS_CXX11) + CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) + IF(COMPILER_SUPPORTS_CXX0X) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") + ELSE(COMPILER_SUPPORTS_CXX0X) + MESSAGE( + FATAL_ERROR + "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support." + ) + ENDIF(COMPILER_SUPPORTS_CXX0X) + ENDIF(COMPILER_SUPPORTS_CXX11) +ENDIF(NOT MSVC) + +# Prepare header to build shared libs (windows) INCLUDE(GenerateExportHeader) +# Find ITK and VTK FIND_PACKAGE(ITK REQUIRED) -INCLUDE(${ITK_USE_FILE}) - 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") IF(USE_QT4) - IF(NOT WIN32) - FIND_LIBRARY( - VTK_USES_QT - NAMES vtkGUISupportQt-${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION} - HINTS ${VTK_LIBRARY_DIRS} - PATHS /usr/lib /usr/local/lib /usr/lib64 /usr/local/lib64 - ) - FIND_LIBRARY( - VTK_USES_QT_OPENGL - vtkGUISupportQtOpenGL-${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION} - HINTS ${VTK_LIBRARY_DIRS} - PATHS /usr/lib /usr/local/lib /usr/lib64 /usr/local/lib64 + FIND_PACKAGE(Qt4 REQUIRED) + INCLUDE(${QT_USE_FILE}) + + ## Check for required vtk-qt4 modules + SET( + vtk_required_modules + vtkGUISupportQt + vtkGUISupportQtOpenGL ) - MARK_AS_ADVANCED(FORCE VTK_USES_QT) - MARK_AS_ADVANCED(FORCE VTK_USES_QT_OPENGL) - IF(VTK_USES_QT AND VTK_USES_QT_OPENGL) - FIND_PACKAGE(Qt4 REQUIRED) - INCLUDE(${QT_USE_FILE}) - ELSE(VTK_USES_QT AND VTK_USES_QT_OPENGL) - MESSAGE(FATAL_ERROR "VTK ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION} was not compiled with Qt4 support!") - ENDIF(VTK_USES_QT AND VTK_USES_QT_OPENGL) - ELSE(NOT WIN32) - FIND_PACKAGE(Qt4 REQUIRED) - INCLUDE(${QT_USE_FILE}) - ENDIF(NOT WIN32) + 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) ## ================================================ @@ -81,7 +103,7 @@ ENDIF(USE_QT4) ## ================================================ IF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR}) - MESSAGE(FATAL_ERROR "Building in the source tree is not allowed") + MESSAGE(FATAL_ERROR "Building in the source tree is not allowed.") ENDIF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR}) ## ===================================== @@ -103,14 +125,32 @@ MARK_AS_ADVANCED( 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 ) -IF(WIN32) +IF(WIN32 OR APPLE) INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib/third_party/glext ) -ENDIF(WIN32) +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) ## =========================== ## = Subdirs containing code =