1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
13 FOREACH(policy ${policies})
15 CMAKE_POLICY(SET ${policy} NEW)
16 ENDIF(POLICY ${policy})
27 SET(prj_VERSION "${prj_MAJ_VER}.${prj_MIN_VER}.${prj_REL_VER}")
33 OPTION(USE_QT4 "Build Qt4-based code" OFF)
34 OPTION(BUILD_EXAMPLES "Build examples" OFF)
36 SET(LIBRARY_TYPE SHARED)
38 ## ========================
39 ## = Packages and options =
40 ## ========================
42 # Force c++11 language version
43 # NOTE: It seems that by default on Visual Studio Compiler supports c++11,
44 # so it only need to be test on other O.S.
46 INCLUDE(CheckCXXCompilerFlag)
47 CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
48 IF(COMPILER_SUPPORTS_CXX11)
49 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
50 ELSE(COMPILER_SUPPORTS_CXX11)
51 CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
52 IF(COMPILER_SUPPORTS_CXX0X)
53 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
54 ELSE(COMPILER_SUPPORTS_CXX0X)
57 "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support."
59 ENDIF(COMPILER_SUPPORTS_CXX0X)
60 ENDIF(COMPILER_SUPPORTS_CXX11)
63 # Prepare header to build shared libs (windows)
64 INCLUDE(GenerateExportHeader)
67 FIND_PACKAGE(ITK REQUIRED)
68 FIND_PACKAGE(VTK REQUIRED)
70 INCLUDE(${ITK_USE_FILE})
71 INCLUDE(${VTK_USE_FILE})
73 # Do not use itk-vtk glue --> problems ahead!!!
75 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.")
76 ENDIF(ITKVtkGlue_LOADED)
80 FIND_PACKAGE(Qt4 REQUIRED)
81 INCLUDE(${QT_USE_FILE})
83 ## Check for required vtk-qt4 modules
89 FOREACH(vtk_module ${vtk_required_modules})
90 IF(NOT ${vtk_module}_LOADED)
93 "${vtk_module} module is required but not available."
96 ENDIF(NOT ${vtk_module}_LOADED)
97 ENDFOREACH(vtk_module)
101 ## ================================================
102 ## = Do not allow to build inside the source tree =
103 ## ================================================
105 IF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR})
106 MESSAGE(FATAL_ERROR "Building in the source tree is not allowed.")
107 ENDIF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR})
109 ## =====================================
110 ## = Where to put executables and libs =
111 ## =====================================
113 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR})
114 SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR})
116 CMAKE_BACKWARDS_COMPATIBILITY
117 EXECUTABLE_OUTPUT_PATH
121 ## ==============================
122 ## = Subdirs containing headers =
123 ## ==============================
126 ${PROJECT_SOURCE_DIR}/lib
127 ${PROJECT_SOURCE_DIR}/lib/third_party
128 ${PROJECT_SOURCE_DIR}/lib/third_party/ItkVtkGlue
129 ${PROJECT_BINARY_DIR}/lib
130 ${PROJECT_BINARY_DIR}/lib/third_party
131 ${PROJECT_BINARY_DIR}/lib/third_party/ItkVtkGlue
135 ${PROJECT_SOURCE_DIR}/lib/third_party/glext
137 ENDIF(WIN32 OR APPLE)
139 ## =======================
140 ## = Local bash commands =
141 ## =======================
147 FOREACH(prog ${bash_PROGRAMS})
149 SET(${prog}_APP ${PROJECT_BINARY_DIR}/$(ConfigurationName)/${prog})
151 SET(${prog}_APP ${PROJECT_BINARY_DIR}/${prog})
155 ## ===========================
156 ## = Subdirs containing code =
157 ## ===========================