]> Creatis software - cpPlugins.git/blob - CMakeLists.txt
CMakeLists.txt updated
[cpPlugins.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2
3 # for CMake 2.6 corrected behaviour (see "cmake --help-policy CMP0003")
4 IF(
5     COMMAND cmake_policy AND
6     ${CMAKE_MAJOR_VERSION} EQUAL 2 AND
7     ${CMAKE_MINOR_VERSION} GREATER 4
8     )
9   CMAKE_POLICY(SET CMP0003 NEW)
10   CMAKE_POLICY(SET CMP0005 NEW)
11   CMAKE_POLICY(SET CMP0011 NEW)
12   CMAKE_POLICY(SET CMP0012 NEW)
13 ENDIF(
14   COMMAND cmake_policy AND
15   ${CMAKE_MAJOR_VERSION} EQUAL 2 AND
16   ${CMAKE_MINOR_VERSION} GREATER 4
17   )
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 ## ========================
40 ## = Packages and options =
41 ## ========================
42
43 INCLUDE(GenerateExportHeader)
44
45 ## -------------------------------------------------------------------------
46 ## If compiling on UNIX-like OS, an error could arise when using ITKVtkGlue:
47 ##
48 ##   <command-line>:0:0: warning: "vtkRenderingCore_AUTOINIT" redefined
49 ##   <command-line>:0:0: note: this is the location of the previous definition
50 ##
51 ## This is avoided by not including the VTK_USE_FILE. Nevertheless, this fails
52 ## on MS-Win OS.
53 ##
54 ## This is due to object factories. To avoid this, and let the project be
55 ## usable on UNIX-like and MS-Win, the way to find ITK and VTK differs
56 ## -------------------------------------------------------------------------
57
58 IF(UNIX)
59   FIND_PACKAGE(ITK REQUIRED)
60   FIND_PACKAGE(VTK REQUIRED)
61   INCLUDE(${ITK_USE_FILE})
62   IF(NOT ITKVtkGlue_LOADED)
63     MESSAGE(FATAL_ERROR "ITKVtkGlue module is required but not available.")
64   ENDIF(NOT ITKVtkGlue_LOADED)
65 ELSE(UNIX)
66   FIND_PACKAGE(ITK REQUIRED)
67   INCLUDE(${ITK_USE_FILE})
68   IF(ITKVtkGlue_LOADED)
69     FIND_PACKAGE(VTK REQUIRED)
70     INCLUDE(${VTK_USE_FILE})
71   ELSE(ITKVtkGlue_LOADED)
72     FIND_PACKAGE(ItkVtkGlue REQUIRED)
73     INCLUDE(${ItkVtkGlue_USE_FILE})
74     SET(Glue ItkVtkGlue)
75   ENDIF(ITKVtkGlue_LOADED)
76 ENDIF(UNIX)
77
78 IF(USE_QT4)
79   FIND_PACKAGE(Qt4 REQUIRED)
80   INCLUDE(${QT_USE_FILE})
81
82   ## Check for required modules
83   IF(NOT vtkGUISupportQt_LOADED)
84     MESSAGE(
85       FATAL_ERROR
86       "vtkGUISupportQt module is required but not available."
87       )
88   ENDIF(NOT vtkGUISupportQt_LOADED)
89   IF(NOT vtkGUISupportQtOpenGL_LOADED)
90     MESSAGE(
91       FATAL_ERROR
92       "vtkGUISupportQtOpenGL module is required but not available."
93       )
94   ENDIF(NOT vtkGUISupportQtOpenGL_LOADED)
95 ENDIF(USE_QT4)
96
97 ## ================================================
98 ## = Do not allow to build inside the source tree =
99 ## ================================================
100
101 IF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR})
102   MESSAGE(FATAL_ERROR "Building in the source tree is not allowed")
103 ENDIF(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR})
104
105 ## =====================================
106 ## = Where to put executables and libs =
107 ## =====================================
108
109 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR})
110 SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR})
111 MARK_AS_ADVANCED(
112   CMAKE_BACKWARDS_COMPATIBILITY
113   EXECUTABLE_OUTPUT_PATH
114   LIBRARY_OUTPUT_PATH
115   )
116
117 ## ==============================
118 ## = Subdirs containing headers =
119 ## ==============================
120
121 INCLUDE_DIRECTORIES(
122   ${PROJECT_SOURCE_DIR}/lib
123   ${PROJECT_SOURCE_DIR}/lib/third_party
124   ${PROJECT_BINARY_DIR}/lib
125   ${PROJECT_BINARY_DIR}/lib/third_party
126   )
127 IF(WIN32)
128   INCLUDE_DIRECTORIES(
129     ${PROJECT_SOURCE_DIR}/lib/third_party/glext
130     )
131 ENDIF(WIN32)
132
133 ## ===========================
134 ## = Subdirs containing code =
135 ## ===========================
136
137 SUBDIRS(
138   cmake
139   lib
140   appli
141   )
142
143 ## eof - $RCSfile$