]> Creatis software - cpPlugins.git/blob - CMakeLists.txt
Minor visual glitches
[cpPlugins.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
2
3 ## ============
4 ## = Policies =
5 ## ============
6
7 SET(
8   policies
9   CMP0015
10   CMP0020
11   CMP0042
12   )
13 FOREACH(policy ${policies})
14   IF(POLICY ${policy})
15     CMAKE_POLICY(SET ${policy} NEW)
16   ENDIF(POLICY ${policy})
17 ENDFOREACH(policy)
18
19 ## ================
20 ## = Project name =
21 ## ================
22
23 PROJECT(cpPlugins)
24 SET(prj_MAJ_VER "0")
25 SET(prj_MIN_VER "0")
26 SET(prj_REL_VER "1")
27 SET(prj_VERSION "${prj_MAJ_VER}.${prj_MIN_VER}.${prj_REL_VER}")
28
29 ## ===========
30 ## = Options =
31 ## ===========
32
33 OPTION(USE_QT4 "Build Qt4-based code" OFF)
34 OPTION(BUILD_EXAMPLES "Build examples" OFF)
35
36 SET(LIBRARY_TYPE SHARED)
37
38 ## ========================
39 ## = Packages and options =
40 ## ========================
41
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.
45 IF(NOT MSVC)
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)
55       MESSAGE(
56         FATAL_ERROR
57         "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support."
58         )
59     ENDIF(COMPILER_SUPPORTS_CXX0X)
60   ENDIF(COMPILER_SUPPORTS_CXX11)
61 ENDIF(NOT MSVC)
62
63 # Prepare header to build shared libs (windows)
64 INCLUDE(GenerateExportHeader)
65
66 # Find ITK and VTK
67 FIND_PACKAGE(ITK REQUIRED)
68 FIND_PACKAGE(VTK REQUIRED)
69
70 INCLUDE(${ITK_USE_FILE})
71 INCLUDE(${VTK_USE_FILE})
72
73 # Do not use itk-vtk glue --> problems ahead!!!
74 IF(ITKVtkGlue_LOADED)
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)
77
78 SET(QT4_FOUND "0")
79 IF(USE_QT4)
80   FIND_PACKAGE(Qt4 REQUIRED)
81   INCLUDE(${QT_USE_FILE})
82
83   ## Check for required vtk-qt4 modules
84   SET(
85     vtk_required_modules
86     vtkGUISupportQt
87     vtkGUISupportQtOpenGL
88     )
89   FOREACH(vtk_module ${vtk_required_modules})
90     IF(NOT ${vtk_module}_LOADED)
91       MESSAGE(
92         FATAL_ERROR
93         "${vtk_module} module is required but not available."
94         )
95       SET(QT4_FOUND "0")
96     ENDIF(NOT ${vtk_module}_LOADED)
97   ENDFOREACH(vtk_module)
98   SET(QT4_FOUND "1")
99 ENDIF(USE_QT4)
100
101 ## ================================================
102 ## = Do not allow to build inside the source tree =
103 ## ================================================
104
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})
108
109 ## =====================================
110 ## = Where to put executables and libs =
111 ## =====================================
112
113 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR})
114 SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR})
115 MARK_AS_ADVANCED(
116   CMAKE_BACKWARDS_COMPATIBILITY
117   EXECUTABLE_OUTPUT_PATH
118   LIBRARY_OUTPUT_PATH
119   )
120
121 ## ==============================
122 ## = Subdirs containing headers =
123 ## ==============================
124
125 INCLUDE_DIRECTORIES(
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
132   )
133 IF(WIN32 OR APPLE)
134   INCLUDE_DIRECTORIES(
135     ${PROJECT_SOURCE_DIR}/lib/third_party/glext
136     )
137 ENDIF(WIN32 OR APPLE)
138
139 ## =======================
140 ## = Local bash commands =
141 ## =======================
142 SET(
143   bash_PROGRAMS
144   cpPlugins_createHost
145   )
146
147 FOREACH(prog ${bash_PROGRAMS})
148   IF(MSVC)
149     SET(${prog}_APP ${PROJECT_BINARY_DIR}/$(ConfigurationName)/${prog})
150   ELSE(MSVC)
151     SET(${prog}_APP ${PROJECT_BINARY_DIR}/${prog})
152   ENDIF(MSVC)
153 ENDFOREACH(prog)
154
155 ## ===========================
156 ## = Subdirs containing code =
157 ## ===========================
158
159 SUBDIRS(
160   cmake
161   lib
162   appli
163   )
164
165 ## eof - $RCSfile$