]> Creatis software - gdcm.git/blob - CMakeLists.txt
Adding gdcmConfigure.h for install and ITK
[gdcm.git] / CMakeLists.txt
1 PROJECT(GDCM)\r
2 CMAKE_MINIMUM_REQUIRED(VERSION 1.8)\r
3 \r
4 #-----------------------------------------------------------------------------\r
5 # GDCM version number, usefull for packaging and doxygen doc:\r
6 SET(GDCM_VERSION_MAJOR 0)\r
7 SET(GDCM_VERSION_MINOR 4)\r
8 SET(GDCM_VERSION_PATCH 0)\r
9 SET(GDCM_VERSION "${GDCM_VERSION_MAJOR}.${GDCM_VERSION_MINOR}")\r
10 SET(GDCM_VERSION_FULL "${GDCM_VERSION}.${GDCM_VERSION_PATCH}")\r
11 \r
12 #-----------------------------------------------------------------------------\r
13 # datadir in CMake:\r
14 SET(GDCM_DATA_DIR "/share/gdcm/" CACHE INTERNAL \r
15   "Install location for data (relative to prefix).")\r
16 MARK_AS_ADVANCED(GDCM_DATA_DIR)\r
17 \r
18 #-----------------------------------------------------------------------------\r
19 # Build shared lib by default\r
20 OPTION(BUILD_SHARED_LIBS "Build GDCM with shared libraries." ON)\r
21 SET(GDCM_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})\r
22 \r
23 #-----------------------------------------------------------------------------\r
24 # Does not work as of 2004/04/05\r
25 #SET(CMAKE_CONFIGURATION_TYPES\r
26 #  Debug\r
27 #  Release\r
28 #)\r
29 #SET(CMAKE_BUILD_TYPE_INIT Debug)\r
30 \r
31 #-----------------------------------------------------------------------------\r
32 # Output directories.\r
33 #Put all stuff in one single dir for Win32, otherwise dll are a pain:\r
34 IF(WIN32 AND GDCM_BUILD_SHARED_LIBS)\r
35   SET(OUTPUT_LIB_DIR ${GDCM_SOURCE_DIR}/bin)\r
36 ELSE(WIN32 AND GDCM_BUILD_SHARED_LIBS)\r
37   SET(OUTPUT_LIB_DIR ${GDCM_SOURCE_DIR}/lib)\r
38 ENDIF(WIN32 AND GDCM_BUILD_SHARED_LIBS)\r
39 \r
40 SET (EXECUTABLE_OUTPUT_PATH ${GDCM_SOURCE_DIR}/bin CACHE PATH "Single output directory for building all executables.")\r
41 SET (LIBRARY_OUTPUT_PATH ${OUTPUT_LIB_DIR} CACHE PATH "Single output directory for building all libraries.")\r
42 MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)\r
43 SET(GDCM_LIBRARY_PATH "${LIBRARY_OUTPUT_PATH}")\r
44 SET(GDCM_EXECUTABLE_PATH "${EXECUTABLE_OUTPUT_PATH}")\r
45 \r
46 #-----------------------------------------------------------------------------\r
47 # Build directory on which many applications depend\r
48 SUBDIRS(\r
49   src\r
50   Dicts\r
51   Test\r
52 )\r
53 \r
54 #-----------------------------------------------------------------------------\r
55 # Adding GDCM_DATA_ROOT\r
56 FIND_PATH(GDCM_DATA_ROOT gdcm-ACR-LibIDO.acr\r
57         ${GDCM_SOURCE_DIR}/../gdcmData \r
58         $ENV{GDCM_DATA}\r
59         $ENV{PUB_DICT_PATH}/../../gdcmData\r
60 )\r
61 \r
62 #-----------------------------------------------------------------------------\r
63 # Deals with problem on SunOS:\r
64 # ostrstream vs. ostringstream\r
65 \r
66 #-----------------------------------------------------------------------------\r
67 # Why one should not use ADD_DEFINITIONS\r
68 # http://www.cmake.org/pipermail/cmake/2003-September/004286.html\r
69 \r
70 #-----------------------------------------------------------------------------\r
71 # __STDC_LIMIT_MACROS -> Refer to stdint.h\r
72 # http://www.cmake.org/pipermail/cmake/2003-October/004369.html\r
73 # http://www.cmake.org/pipermail/cmake/2003-October/004373.html\r
74 \r
75 #SET(GDCM_COMPILE_FLAGS  "-D__STDC_LIMIT_MACROS  -DPUB_DICT_PATH=\\\"${CMAKE_INSTALL_PREFIX}${GDCM_DATA_DIR}\\\""  )\r
76 \r
77 SET( GDCM_PUB_DICT_PATH "${CMAKE_INSTALL_PREFIX}${GDCM_DATA_DIR}")\r
78 \r
79 # SunOS + old gcc fixes:\r
80 INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityCXX.cmake)\r
81 IF(CMAKE_NO_ANSI_STRING_STREAM)\r
82   SET(GDCM_NO_ANSI_STRING_STREAM 1)\r
83 ENDIF(CMAKE_NO_ANSI_STRING_STREAM)\r
84 \r
85 INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)\r
86 CHECK_INCLUDE_FILE("stdint.h"    CMAKE_HAVE_STDINT_H)\r
87 \r
88 IF(NOT CMAKE_HAVE_STDINT_H)\r
89   SET(GDCM_HAVE_NO_STDINT_H 1)\r
90 ENDIF(NOT CMAKE_HAVE_STDINT_H)\r
91 \r
92 #SET(GDCM_NO_ANSI_STRING_STREAM\r
93 #  ${CMAKE_NO_ANSI_STRING_STREAM}\r
94 #)\r
95 CONFIGURE_FILE(${GDCM_SOURCE_DIR}/gdcmConfigure.h.in\r
96                ${GDCM_BINARY_DIR}/gdcmConfigure.h @ONLY IMMEDIATE)\r
97 \r
98 INSTALL_FILES(/include .h gdcmConfigure.h)\r
99 \r
100 #-----------------------------------------------------------------------------\r
101 # Add the testing directories\r
102 OPTION(GDCM_BUILD_TESTING "Test the project" ON)\r
103 IF(GDCM_BUILD_TESTING)\r
104   ENABLE_TESTING()\r
105   INCLUDE (${CMAKE_ROOT}/Modules/Dart.cmake)\r
106   SUBDIRS(Test)\r
107 ENDIF(GDCM_BUILD_TESTING)\r
108 \r
109 \r
110 #-----------------------------------------------------------------------------\r
111 OPTION(GDCM_VTK "Build VTK-GDCM Lib." OFF)\r
112 IF(GDCM_VTK)\r
113   # Search VTK\r
114   FIND_PACKAGE(VTK)\r
115   # If vtk found\r
116   IF(VTK_FOUND)\r
117     INCLUDE(${VTK_USE_FILE})\r
118     SUBDIRS(vtk)\r
119   ENDIF(VTK_FOUND)\r
120 ENDIF(GDCM_VTK)\r
121 \r
122 #-----------------------------------------------------------------------------\r
123 OPTION(GDCM_WRAP_PYTHON "Wrap GDCM classes into the Python language." OFF)\r
124 #if wrapping enable\r
125 IF(GDCM_WRAP_PYTHON)\r
126   # Search Python libs:\r
127   FIND_PACKAGE(PythonLibs)\r
128   # If PythonLibs found\r
129   IF(PYTHON_LIBRARY)\r
130     SUBDIRS(gdcmPython)\r
131   ENDIF(PYTHON_LIBRARY)\r
132 ENDIF(GDCM_WRAP_PYTHON)\r
133 \r
134 #-----------------------------------------------------------------------------\r
135 OPTION(GDCM_DOXYGEN "Build source documentation using doxygen." OFF)\r
136 # if doxygen enable\r
137 IF(GDCM_DOXYGEN)\r
138   # Search Doxygen:\r
139   FIND_PACKAGE(Doxygen)\r
140   IF(DOXYGEN)\r
141     SUBDIRS(Doc)\r
142   ENDIF(DOXYGEN)\r
143 ENDIF(GDCM_DOXYGEN)\r
144 \r
145 #-----------------------------------------------------------------------------\r
146 # Configure files with settings for use by the build.\r
147 # for third party to access gdcm through cmake\r
148 # to be rewritten to include only the necessary\r
149 \r
150 CONFIGURE_FILE(\r
151   ${GDCM_SOURCE_DIR}/gdcmConfig.cmake.in \r
152   ${GDCM_BINARY_DIR}/gdcmConfig.cmake @ONLY IMMEDIATE\r
153   )\r
154 \r
155 # Export uor build settings and library\r
156 # dependencies for the use by the user projects.\r
157 INCLUDE(\r
158   ${CMAKE_ROOT}/Modules/CMakeExportBuildSettings.cmake)\r
159 \r
160 CMAKE_EXPORT_BUILD_SETTINGS(\r
161   ${GDCM_BINARY_DIR}/gdcmBuildSettings.cmake\r
162   )\r
163 \r
164 EXPORT_LIBRARY_DEPENDENCIES(\r
165   ${GDCM_BINARY_DIR}/gdcmLibraryDepends.cmake\r
166   )\r
167 \r
168 # Intall the packaging files for use by FIND_PACKAGE(GDCM) in user projects.\r
169 INSTALL_FILES(/lin/gdcm FILES\r
170   ${GDCM_SOURCE_DIR}/gdcmUse.cmake\r
171   ${GDCM_BINARY_DIR}/gdcmConfig.cmake\r
172   ${GDCM_BINARY_DIR}/gdcmBuildSettings.cmake\r
173   ${GDCM_BINARY_DIR}/gdcmLibraryDepends.cmake\r
174   )\r
175 \r
176 #-----------------------------------------------------------------------------\r
177 # Copy / paste from old m4 script:\r
178 \r
179 # EXTRA_DIST = \\r
180 #       AUTHORS \\r
181 #       ChangeLog \\r
182 #       COPYING \\r
183 #       INSTALL \\r
184 #       NEWS \\r
185 #       README \\r
186 #       TODO \\r
187 #       gdcm.spec \\r
188 #       gdcm.dsw\r
189 \r
190 #release:\r
191 #       $(MAKE) dist distdir=$(PACKAGE)-$(VERSION)\r
192 \r
193 #snapshot:\r
194 #       $(MAKE) dist distdir=$(PACKAGE)`date +"%y%m%d"`\r