]> Creatis software - cpPlugins.git/blob - CMakeLists.txt
Widget integration (step 1/6)
[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_MAJOR_VERSION   "0")
25 SET(prj_MINOR_VERSION   "0")
26 SET(prj_RELEASE_VERSION "1")
27 SET(
28   prj_VERSION
29   "${prj_MAJOR_VERSION}.${prj_MINOR_VERSION}.${prj_RELEASE_VERSION}"
30   )
31
32 ## ===========
33 ## = Options =
34 ## ===========
35
36 OPTION(USE_QT4 "Build Qt4-based code" OFF)
37 OPTION(BUILD_EXAMPLES "Build examples" OFF)
38
39 OPTION(BUILD_SHARED_LIBRARIES "Build libraries as shared" OFF)
40 IF(BUILD_SHARED_LIBRARIES)
41   SET(LIBRARY_TYPE SHARED)
42 ELSE(BUILD_SHARED_LIBRARIES)
43   SET(LIBRARY_TYPE STATIC)
44 ENDIF(BUILD_SHARED_LIBRARIES)
45
46 ## ========================
47 ## = Packages and options =
48 ## ========================
49
50 # Prepare header to build shared libs (windows)
51 INCLUDE(GenerateExportHeader)
52
53 # Find ITK and VTK
54 FIND_PACKAGE(ITK REQUIRED)
55 FIND_PACKAGE(VTK REQUIRED)
56
57 INCLUDE(${ITK_USE_FILE})
58 INCLUDE(${VTK_USE_FILE})
59
60 # Do not use itk-vtk glue --> problems ahead!!!
61 IF(ITKVtkGlue_LOADED)
62   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.")
63 ENDIF(ITKVtkGlue_LOADED)
64
65 SET(QT4_FOUND "0")
66 IF(USE_QT4)
67   FIND_PACKAGE(Qt4 REQUIRED)
68   INCLUDE(${QT_USE_FILE})
69
70   ## Check for required vtk-qt4 modules
71   SET(
72     vtk_required_modules
73     vtkGUISupportQt
74     vtkGUISupportQtOpenGL
75     )
76   FOREACH(vtk_module ${vtk_required_modules})
77     IF(NOT ${vtk_module}_LOADED)
78       MESSAGE(
79         FATAL_ERROR
80         "${vtk_module} module is required but not available."
81         )
82       SET(QT4_FOUND "0")
83     ENDIF(NOT ${vtk_module}_LOADED)
84   ENDFOREACH(vtk_module)
85   SET(QT4_FOUND "1")
86 ENDIF(USE_QT4)
87
88 ## ================================================
89 ## = Do not allow to build inside the source tree =
90 ## ================================================
91
92 IF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR})
93   MESSAGE(FATAL_ERROR "Building in the source tree is not allowed.")
94 ENDIF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR})
95
96 ## =====================================
97 ## = Where to put executables and libs =
98 ## =====================================
99
100 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR})
101 SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR})
102 MARK_AS_ADVANCED(
103   CMAKE_BACKWARDS_COMPATIBILITY
104   EXECUTABLE_OUTPUT_PATH
105   LIBRARY_OUTPUT_PATH
106   )
107
108 ## ==============================
109 ## = Subdirs containing headers =
110 ## ==============================
111
112 INCLUDE_DIRECTORIES(
113   ${PROJECT_SOURCE_DIR}/lib
114   ${PROJECT_SOURCE_DIR}/lib/third_party
115   ${PROJECT_SOURCE_DIR}/lib/third_party/ItkVtkGlue
116   ${PROJECT_BINARY_DIR}/lib
117   ${PROJECT_BINARY_DIR}/lib/third_party
118   ${PROJECT_BINARY_DIR}/lib/third_party/ItkVtkGlue
119   )
120 IF(WIN32 OR APPLE)
121   INCLUDE_DIRECTORIES(
122     ${PROJECT_SOURCE_DIR}/lib/third_party/glext
123     )
124 ENDIF(WIN32 OR APPLE)
125
126 ## =======================
127 ## = Local bash commands =
128 ## =======================
129 SET(
130   bash_PROGRAMS
131   cpPlugins_createHost
132   )
133
134 FOREACH(prog ${bash_PROGRAMS})
135   IF(MSVC)
136     SET(${prog}_APP ${PROJECT_BINARY_DIR}/$(ConfigurationName)/${prog})
137   ELSE(MSVC)
138     SET(${prog}_APP ${PROJECT_BINARY_DIR}/${prog})
139   ENDIF(MSVC)
140 ENDFOREACH(prog)
141
142 ## ===========================
143 ## = Subdirs containing code =
144 ## ===========================
145
146 SUBDIRS(
147   cmake
148   lib
149   appli
150   )
151
152 ## eof - $RCSfile$