]> Creatis software - creaImageIO.git/blob - src/CMakeLists.txt
90f1ceee4aab9c93767b19c71774491f63966256
[creaImageIO.git] / src / CMakeLists.txt
1 # ---------------------------------------------------------------------
2 #
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
4 #                        pour la Santé)
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
8 #
9 #  This software is governed by the CeCILL-B license under French law and 
10 #  abiding by the rules of distribution of free software. You can  use, 
11 #  modify and/ or redistribute the software under the terms of the CeCILL-B 
12 #  license as circulated by CEA, CNRS and INRIA at the following URL 
13 #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
14 #  or in the file LICENSE.txt.
15 #
16 #  As a counterpart to the access to the source code and  rights to copy,
17 #  modify and redistribute granted by the license, users are provided only
18 #  with a limited warranty  and the software's author,  the holder of the
19 #  economic rights,  and the successive licensors  have only  limited
20 #  liability. 
21 #
22 #  The fact that you are presently reading this means that you have had
23 #  knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------
25
26 SET(LIBRARY_NAME creaImageIO)
27
28 #-----------------------------------------
29 #SOURCES
30 FILE(GLOB SOURCES_CREAIMAGEIO  
31   # SQLite 
32   CppSQLite3.cpp
33   # 
34   creaImageIOGimmick.cpp
35   creaImageIOSynchron.cpp
36   creaImageIOPACSConnection.cpp
37
38   # Abstract views
39   creaImageIOTreeView.cpp
40
41   # settings
42   creaImageIOSettings.cpp
43   creaImageIOGimmickView.cpp
44   )
45 #--------------------------------------------
46
47 IF(USE_WXWIDGETS)
48          FILE(GLOB SOURCES_CREAIMAGEIO_DIALOG  
49            creaImageIOGimmickReaderDialog.cpp
50            )
51         SOURCE_GROUP("Source Files\\Reader Dialog" FILES ${SOURCES_CREAIMAGEIO_DIALOG})
52 ENDIF(USE_WXWIDGETS)
53
54 #--------------------------------------------
55  # Attributed tree data structure
56 FILE(GLOB SOURCES_CREAIMAGEIO_TREE
57           creaImageIOTree.cpp
58           creaImageIOTreeAttributeDescriptor.cpp
59           creaImageIOTreeDescriptor.cpp
60           creaImageIOTreeNode.cpp
61           creaImageIOTreeLevelDescriptor.cpp
62             # Tree Handlers
63           creaImageIOTreeHandler.cpp
64           creaImageIOTreeHandlerImageAdder.cpp
65           creaImageIOSQLiteTreeHandler.cpp
66           creaImageIOOutputModel.cpp
67           )
68
69 #--------------------------------------------
70  # Image Readers
71 IF(USE_GDCM)
72          FILE(GLOB SOURCES_CREAIMAGEIO_IMG_DICOM_READER
73                         creaImageIODicomImageReader.cpp
74                         )
75 ENDIF(USE_GDCM)
76           
77 IF(USE_GDCM2)
78          FILE(GLOB SOURCES_CREAIMAGEIO_IMG_DICOM_READER
79                         creaImageIODicomImageReader2.cpp
80                         creaImageIODicomScanner.cpp
81                         )
82 ENDIF(USE_GDCM2)
83
84 IF (USE_WXWIDGETS)
85         FILE(GLOB SOURCES_CREAIMAGEIO_MULTI_IMG_READER   creaImageIOMultiThreadImageReader.cpp)
86 #ELSEIF(USE_QT4)
87         #FILE(GLOB SOURCES_CREAIMAGEIO_MULTI_IMG_READER   creaImageIOQMultiThreadImageReader.cpp)
88 ENDIF()
89
90 FILE(GLOB SOURCES_CREAIMAGEIO_IMG_READER
91           creaImageIOSimpleView.cpp
92           creaImageIOAbstractImageReader.cpp
93           creaImageIOImageReader.cpp
94           creaImageIOUltrasonixImageReader.cpp
95           creaImageIOVtkImageReader.cpp
96           ${SOURCES_CREAIMAGEIO_IMG_DICOM_READER}
97           ${SOURCES_CREAIMAGEIO_MULTI_IMG_READER}
98           )
99 IF(USE_ITK)
100 FILE(GLOB SOURCES_CREAIMAGEIO_ITK_DLG
101         creaImageIOWxIsimpleDlg.h
102         creaImageIOWxIsimpleDlg.hpp
103         creaImageIOWxAnySimpleDlg.h
104         creaImageIOWxAnySimpleDlg.cpp
105         )
106 ENDIF(USE_ITK)
107           
108 #--------------------------------------------
109 # The wxWidgets-based components
110 if (USE_WXWIDGETS)
111         FILE(GLOB SOURCES_CREAIMAGEIO_WX
112                   creaImageIOWxSimpleDlg.cpp
113                   creaImageIOWxAttributeSelectionPanel.cpp
114                   creaImageIOWxCustomizeConfigPanel.cpp
115                   creaImageIOWxDescriptorPanel.cpp
116                   creaImageIOWxEditFieldsPanel.cpp
117                   creaImageIOWxExportDlg.cpp
118                   creaImageIOWxDumpPanel.cpp
119                   creaImageIOWxGimmickView.cpp
120                   creaImageIOWxGimmickReaderDialog.cpp
121                   creaImageIOWxGimmickFrame.cpp
122                   creaImageIOWxGimmickPanel.cpp
123                   creaImageIOWxGimmickTools.cpp
124                   creaImageIOWxListenerPanel.cpp
125                   creaImageIOWxPACSConnectionPanel.cpp
126                   creaImageIOWxTreeView.cpp
127                   creaImageIOWxOutputDlg.cpp
128                   #  Viewer
129                   creaImageIOWxViewer.cpp
130                   creaImageIOExternalGimmick.cpp
131                   BlockScopeWxApp.cpp
132                   creaImageIOListener.cpp
133                   )
134         SOURCE_GROUP("Source Files\\GUI" FILES ${SOURCES_CREAIMAGEIO_WX})
135         
136         IF(USE_ITK)
137 FILE(GLOB SOURCES_CREAIMAGEIO_ITK_DLG
138         creaImageIOWxIsimpleDlg.h
139         creaImageIOWxIsimpleDlg.hpp
140         creaImageIOWxAnySimpleDlg.h
141         creaImageIOWxAnySimpleDlg.cpp
142         )
143 ENDIF(USE_ITK)
144           
145 endif(USE_WXWIDGETS)
146
147
148
149
150 #--------------------------------------------
151 # USE QT, need to transform files (moc mechanism)
152
153 IF (USE_QT4)
154
155 #ADD_SUBDIRECTORY(Qt)
156         # UI
157         FILE(GLOB UI_FILES Qt/*.ui)
158         QT4_WRAP_UI(UI_SOURCES ${UI_FILES})
159         SOURCE_GROUP("Source Files\\UI Files" FILES ${UI_FILES})
160         SOURCE_GROUP("Source Files\\Qt Generated Files" FILES ${UI_SOURCES})
161
162         #cpp
163         FILE(GLOB QT_CPP Qt/*.cpp
164                 #creaImageIOQtGimmickReaderDialog.cpp 
165                 )
166         
167         # headers
168         FILE(GLOB QT4_HEADERS_TO_WRAP Qt/*.h
169                 #creaImageIOQtGimmickReaderDialog.h
170                 )
171         # UI
172         #       FILE(GLOB UI_FILES *.ui)
173         #   QT4_WRAP_UI(UI_SOURCES ${UI_FILES})
174         # SOURCE_GROUP("UI Files" FILES ${UI_FILES})
175         # SOURCE_GROUP("Qt Generated Files" FILES ${UI_SOURCES})
176 #       FILE(GLOB UI_FILES creaImageIOQtGimmickReaderDialog.ui)
177 #       QT4_WRAP_UI(UI_SOURCES_H ${UI_FILES} OPTIONS -o ${PROJECT_BINARY_DIR}/src)
178          QT4_WRAP_CPP(QT_MOC_CPP ${QT4_HEADERS_TO_WRAP})
179   
180    # FILE(GLOB ${LIBRARY_NAME}_HEADERS "*.h" "*.txx" "${PROJECT_BINARY_DIR}/src/*.h")
181         # MEssage(STATUS" qt files = ${QT_MOC_CPP}")
182          SOURCE_GROUP("Source Files\\GUI" FILES ${QT_MOC_CPP} ${QT_CPP} )
183         # INCLUDE_DIRECTORIES ( ${PROJECT_BINARY_DIR})
184         SOURCE_GROUP("Source Files\\GUI" FILES ${UI_SOURCES_H} ${UI_FILES})
185         SOURCE_GROUP("Header Files" FILES ${QT4_HEADERS_TO_WRAP})
186 ENDIF(USE_QT4)
187
188 IF(USE_XERCES)
189         FILE(GLOB SOURCES_CREAIMAGEIO_OUTPUT
190                   creaImageIOOutputModel.cpp
191                   creaImageIOOutputModelParser.cpp
192                   )
193         SOURCE_GROUP("Source Files\\Output" FILES ${SOURCES_CREAIMAGEIO_OUTPUT})         
194 ENDIF(USE_XERCES)
195
196
197
198
199 # Header Files    
200 FILE(GLOB HEADER_CREAIMAGEIO creaImageIOImagePointerHolder.h  CppSQLite3.h)
201 #*.h)
202 FILE(GLOB SOURCES_CREAIMAGEIO_PACS PACS/*.cpp)
203 FILE(GLOB HEADER_CREAIMAGEIO_PACS PACS/*.h)
204
205 FILE(GLOB QT4_HEADERS           creaImageIOQtGimmickReaderDialog.h              )
206 MEssage(STATUS" qt files = ${QT4_HEADERS}")
207 SOURCE_GROUP("Source Files" FILES ${SOURCES_CREAIMAGEIO})
208 SOURCE_GROUP("Header Files" FILES ${HEADER_CREAIMAGEIO} ${QT4_HEADERS})
209 if(BUILD_CREA_PACS)
210         SOURCE_GROUP("Source Files\\PACS" FILES ${SOURCES_CREAIMAGEIO_PACS})
211         SOURCE_GROUP("Header Files\\PACS" FILES ${HEADER_CREAIMAGEIO_PACS})
212 endif(BUILD_CREA_PACS)
213 SOURCE_GROUP("Source Files\\Readers" FILES ${SOURCES_CREAIMAGEIO_IMG_READER}
214                                                                                         ${SOURCES_CREAIMAGEIO_IMG_DICOM_READER})
215 SOURCE_GROUP("Source Files\\Tree" FILES ${SOURCES_CREAIMAGEIO_TREE})
216
217 SOURCE_GROUP("Source Files\\ITK" FILES ${SOURCES_CREAIMAGEIO_ITK_DLG})
218
219
220 IF(USE_WXWIDGETS)
221 SET( GUI_SRCS
222          ${SOURCES_CREAIMAGEIO_WX}
223          ${SOURCES_CREAIMAGEIO_DIALOG}
224          )
225 ELSE(USE_WXWIDGETS)
226 SET( GUI_SRCS
227          ${QT_CPP}
228          ${UI_SOURCES}
229          ${QT_MOC_CPP}
230          )
231 ENDIF(USE_WXWIDGETS)
232 SET( PRIMITIVE_SRCS
233  ${SOURCES_CREAIMAGEIO}
234  ${HEADER_CREAIMAGEIO}
235  ${SOURCES_CREAIMAGEIO_IMG_READER}
236  ${SOURCES_CREAIMAGEIO_IMG_DICOM_READER}
237  ${GUI_SRCS}
238  ${SOURCES_CREAIMAGEIO_TREE}
239  ${SOURCES_CREAIMAGEIO_ITK_DLG}
240 )
241
242
243 #if ( ${CMAKE_EXE_LINKER_FLAGS} MATCHES "message:x64")message("charlie ${CMAKE_SYSTEM_PROCESSOR}")endif()
244
245 if( BUILD_CREA_PACS)
246         SET (SRCS
247                 ${PRIMITIVE_SRCS}
248                 ${SOURCES_CREAIMAGEIO_PACS}
249                 ${HEADER_CREAIMAGEIO_PACS}
250                 )
251 else (BUILD_CREA_PACS)
252 IF(USE_XERCES)
253         SET (SRCS
254                 ${PRIMITIVE_SRCS}
255                 ${SOURCES_CREAIMAGEIO_OUTPUT}
256                 )
257 ELSE(USE_XERCES)
258         SET (SRCS
259                 ${PRIMITIVE_SRCS}
260                 )
261 ENDIF(USE_XERCES)
262 endif (BUILD_CREA_PACS)
263
264 OPTION(${LIBRARY_NAME}_BUILD_SHARED 
265   "Build ${LIBRARY_NAME} as a shared library (dynamic) ?" ON)
266 IF (${LIBRARY_NAME}_BUILD_SHARED)
267   SET(CREAIMAGEIO_BUILD_SHARED SHARED)
268   crea_DEFINE(CREAIMAGEIO_BUILD_SHARED)
269 ENDIF(${LIBRARY_NAME}_BUILD_SHARED)
270
271 crea_DEFINE(CREAIMAGEIO_EXPORT_SYMBOLS)
272
273 ADD_LIBRARY(${LIBRARY_NAME} ${CREAIMAGEIO_BUILD_SHARED} ${SRCS})
274
275 IF(USE_QT4)
276 TARGET_LINK_LIBRARIES(${LIBRARY_NAME} 
277       ${QT_LIBRARIES})
278 ENDIF(USE_QT4)
279
280 IF(USE_WXWIDGETS)
281 TARGET_LINK_LIBRARIES(${LIBRARY_NAME} 
282       ${WXWIDGETS_LIBRARIES})
283 ENDIF(USE_WXWIDGETS)
284
285
286 IF (NOT USE_XERCES)
287 TARGET_LINK_LIBRARIES(${LIBRARY_NAME} 
288   ${crea_LIBRARIES}
289   ${creaBruker_LIBRARIES}
290   ${WXWIDGETS_LIBRARIES}
291   ${VTK_LIBRARIES}
292   ${GDCM_LIBRARIES}
293   ${BOOST_LIBRARIES}
294   ${ITK_LIBRARIES}
295   sqlite3)
296 ELSE(NOT USE_XERCES)
297 TARGET_LINK_LIBRARIES(${LIBRARY_NAME} 
298   ${crea_LIBRARIES}
299   ${creaBruker_LIBRARIES}
300   ${WXWIDGETS_LIBRARIES}
301   ${VTK_LIBRARIES}
302   ${GDCM_LIBRARIES}
303   ${BOOST_LIBRARIES}
304   ${XERCES_LIBRARIES}
305   sqlite3)  
306 ENDIF(NOT USE_XERCES)
307   
308  
309 #----------------------------------------------------------------------------
310 # INSTALLS LIBRARY
311 FILE(GLOB HEADERS "*.h" "*.txx")
312 INSTALL(
313   FILES ${HEADERS}
314   DESTINATION include/${LIBRARY_NAME}
315   )
316   
317
318 SET(CREAIMAGEIO_LIB_PATH ${CMAKE_CREA_LIB_PATH} )
319
320 INSTALL(
321   TARGETS ${LIBRARY_NAME} 
322   DESTINATION ${CREAIMAGEIO_LIB_PATH})
323
324      # Sets the settings for macro CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE
325   SET(${LIBRARY_NAME}_INSTALL_FOLDER ${LIBRARY_NAME})
326   SET(${LIBRARY_NAME}_LIBRARIES ${LIBRARY_NAME} )
327   
328 #  FILE(RELATIVE_PATH 
329 #    ${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS 
330 #    ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
331 #    )
332 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS
333     src
334     win32
335 )
336
337
338   IF ( ${PROJECT_BINARY_DIR} STREQUAL ${EXECUTABLE_OUTPUT_PATH} )
339     SET(CILFC_EXECUTABLE_OUTPUT_REL_PATH ".")
340   ELSE ( ${PROJECT_BINARY_DIR} STREQUAL ${EXECUTABLE_OUTPUT_PATH} )
341     FILE(RELATIVE_PATH 
342       CILFC_EXECUTABLE_OUTPUT_REL_PATH
343       ${PROJECT_BINARY_DIR} ${EXECUTABLE_OUTPUT_PATH})
344   ENDIF ( ${PROJECT_BINARY_DIR} STREQUAL ${EXECUTABLE_OUTPUT_PATH} )
345
346
347
348   SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS ${CMAKE_CREA_LIB_PATH} )
349
350   IF(UNIX)
351     SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS 
352       ${CILFC_EXECUTABLE_OUTPUT_REL_PATH})
353   ELSE(UNIX)
354     SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS 
355       ${CILFC_EXECUTABLE_OUTPUT_REL_PATH})
356   ENDIF(UNIX)
357   SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS include/${LIBRARY_NAME})
358   
359   SET(${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE TRUE)
360 SET(${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE 
361   ${PROJECT_SOURCE_DIR}/src/Additional${LIBRARY_NAME}Config.cmake.in)
362 SET(${LIBRARY_NAME}_ADDITIONAL_USE_FILE 
363   ${PROJECT_SOURCE_DIR}/src/AdditionalUse${LIBRARY_NAME}.cmake.in)
364
365   # Invoke the advanced macro
366   CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE(${LIBRARY_NAME})
367 IF (WIN32)
368         SET(INPUT_DATA_DIR ${PROJECT_SOURCE_DIR}/src/data)
369         SET(OUTPUT_DATA_DIR ${PROJECT_BINARY_DIR}/bin/share/creaImageIO)
370 ELSE (WIN32)
371         SET(INPUT_DATA_DIR ${PROJECT_SOURCE_DIR}/src/data)
372         SET(OUTPUT_DATA_DIR ${PROJECT_BINARY_DIR}/share/creaImageIO)
373 ENDIF (WIN32)
374 CREA_CPDIR(${INPUT_DATA_DIR} ${OUTPUT_DATA_DIR})
375
376   
377 #CREA_INSTALL_LIBRARY_FOR_CMAKE(${LIBRARY_NAME})
378 #-----------------------------------------------------------------------------
379
380 OPTION( BUILD_DOXYGEN_DOC "Build doxygen doc ?" OFF)
381 IF(BUILD_DOXYGEN_DOC)
382   ADD_SUBDIRECTORY(doxygen)
383 ENDIF(BUILD_DOXYGEN_DOC)
384
385 INCLUDE_DIRECTORIES(
386 #  ${PROJECT_BINARY_DIR}
387   ${PROJECT_SOURCE_DIR}/src
388   )