-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 =
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_PACKAGE(VTK REQUIRED)
+# Find ITK and VTK
FIND_PACKAGE(ITK REQUIRED)
+FIND_PACKAGE(VTK REQUIRED)
+
INCLUDE(${ITK_USE_FILE})
+INCLUDE(${VTK_USE_FILE})
-## Check for required modules
-IF(NOT ITKVtkGlue_LOADED)
- MESSAGE(FATAL_ERROR "ITKVtkGlue module is required but not available.")
-ENDIF(NOT ITKVtkGlue_LOADED)
+# 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)
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
- ## Check for required modules
- IF(NOT vtkGUISupportQt_LOADED)
- MESSAGE(
- FATAL_ERROR
- "vtkGUISupportQt module is required but not available."
- )
- ENDIF(NOT vtkGUISupportQt_LOADED)
- IF(NOT vtkGUISupportQtOpenGL_LOADED)
- MESSAGE(
- FATAL_ERROR
- "vtkGUISupportQtOpenGL module is required but not available."
- )
- ENDIF(NOT vtkGUISupportQtOpenGL_LOADED)
+ ## Check for required vtk-qt4 modules
+ SET(
+ vtk_required_modules
+ vtkGUISupportQt
+ vtkGUISupportQtOpenGL
+ )
+ 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)
## ================================================
## ================================================
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})
## =====================================
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 =