]> Creatis software - crea.git/blob - cmake/CREAMacro_FindAndUseLibraries.cmake
*** empty log message ***
[crea.git] / cmake / CREAMacro_FindAndUseLibraries.cmake
1
2
3 MACRO(CREA_FIND_AND_USE_LIBRARIES)
4
5 set(USE_DEBUG_LIB "" CACHE BOOL "Use Debug Libraries" )
6
7 #-----------------------------------------------------------------------------
8 # If one can invoke this macro then crea has already been found !!
9 # However if one whishes to link against crea and crea was built 
10 # with wx or vtk then we have to find them.
11 # This USE_CREA var is made to resolve this dependency.
12 IF(USE_CREA)
13   IF(CREA_BUILT_WITH_WX)
14     SET(USE_WXWIDGETS ON)
15   ENDIF(CREA_BUILT_WITH_WX)
16   IF(CREA_BUILT_WITH_VTK)
17     SET(USE_VTK ON)
18   ENDIF(CREA_BUILT_WITH_VTK)
19 ENDIF(USE_CREA)
20 #-----------------------------------------------------------------------------
21
22
23 #-----------------------------------------------------------------------------
24 IF(USE_QT4)
25   IF(NOT QT_FOUND)      
26   
27         INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseQt.cmake)
28         #FIND_PACKAGE(Qt4 REQUIRED)     
29         
30     IF(QT_FOUND)
31       MESSAGE ( STATUS "=======================================")
32       MESSAGE ( STATUS "Looking for QT4... found")
33       MESSAGE ( STATUS "* Inc Dir = ${QT_INCLUDE_DIR}")
34       MESSAGE ( STATUS "* Version = ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")
35       INCLUDE(${QT_USE_FILE})
36          
37       CREA_DEFINE( USE_QT )
38     #    SET(QT_LIBRARIES
39     #      ${QT_LIBRARIES}
40     #      ) 
41     #  MARK_AS_ADVANCED(Qt4_DIR)
42    ENDIF(QT_FOUND)
43   ENDIF(NOT QT_FOUND)
44 ENDIF(USE_QT4)
45 #-----------------------------------------------------------------------------
46
47 #-----------------------------------------------------------------------------
48 IF(USE_VTK)
49   INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseVTK.cmake)
50   CREA_FIND_AND_USE_VTK()  
51 ENDIF(USE_VTK)
52 #-----------------------------------------------------------------------------
53
54 #-----------------------------------------------------------------------------
55 IF(USE_KWWIDGETS)
56   IF(NOT KWWidgets_FOUND)
57     # Search KWWidgets
58     FIND_PACKAGE(KWWidgets)
59     # If found
60     IF(KWWidgets_FOUND)
61       MESSAGE ( STATUS "=======================================")
62       MESSAGE ( STATUS "Looking for KWWidgets... found")
63       MESSAGE ( STATUS "* Dir     = ${KWWidgets_DIR}")
64       MESSAGE ( STATUS "* Version = ${KWWidgets_MAJOR_VERSION}.${KWWidgets_MINOR_VERSION}.${KWWidgets_BUILD_VERSION}")
65       IF (USE_VTK)
66          # KWWidgets must not search again for vtk !
67         SET(KWWidgets_NO_USE_VTK ON)
68       ENDIF (USE_VTK)
69
70       INCLUDE(${KWWidgets_USE_FILE})
71       CREA_DEFINE( USE_KWWIDGETS )
72       SET(KWWIDGETS_LIBRARIES
73         ${KWWidgets_LIBRARIES}
74         ) 
75       MARK_AS_ADVANCED(KWWidgets_DIR)
76     ELSE(KWWidgets_FOUND)
77       message(FATAL_ERROR "KWWidgets_DIR not found")
78     ENDIF(KWWidgets_FOUND)
79   ENDIF(NOT KWWidgets_FOUND)
80 ENDIF(USE_KWWIDGETS)
81 #-----------------------------------------------------------------------------
82
83
84
85 #-----------------------------------------------------------------------------
86 IF(USE_ITK)
87   IF(NOT ITK_FOUND)     
88         
89     # Search ITK
90     FIND_PACKAGE(ITK)
91     # If itk found
92     IF(ITK_FOUND)
93       MESSAGE ( STATUS "=======================================")
94       MESSAGE ( STATUS "Looking for ITK... found")
95       MESSAGE ( STATUS "* Dir     = ${ITK_DIR}")
96       MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
97       SET(SKIP_ITK_BUILD_SETTINGS_FILE ON)
98       INCLUDE(${ITK_USE_FILE})
99       CREA_DEFINE( USE_ITK )
100       CREA_DEFINE( _USE_ITK_ )
101       SET(ITK_LIBRARIES
102         ITKCommon ITKIO ITKBasicFilters ITKAlgorithms
103         )  
104       MARK_AS_ADVANCED(ITK_DIR)
105     ELSE(ITK_FOUND)
106       message(FATAL_ERROR "ITK_DIR not found")
107     ENDIF(ITK_FOUND)
108   ENDIF(NOT ITK_FOUND)
109 ENDIF(USE_ITK)
110 #-----------------------------------------------------------------------------
111
112
113 #-----------------------------------------------------------------------------
114 IF(USE_GDCM)
115   IF (USE_GDCM2)
116     MESSAGE(ERROR "CANNOT USE BOTH gdcm AND gdcm2 !")
117   ENDIF (USE_GDCM2)
118
119   IF(NOT GDCM_FOUND)
120     # Search GDCM
121     FIND_PACKAGE(GDCM)
122     # If gdcm found
123     IF(GDCM_FOUND)
124       INCLUDE(${GDCM_USE_FILE})
125       CREA_DEFINE( USE_GDCM )
126       
127       MESSAGE ( STATUS "=======================================")
128       MESSAGE ( STATUS "Looking for GDCM... found")
129       MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
130       MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
131       MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
132       
133       # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
134       # embedded gdcm in ITK and will result in hard seg faults !
135       IF(USE_ITK)
136         IF (GDCM_NAME_SPACE STREQUAL "gdcm")
137           MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
138         ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
139       ENDIF(USE_ITK)
140       
141       MARK_AS_ADVANCED(GDCM_DIR)
142       
143       SET(GDCM_LIBRARIES
144         ${GDCM_LIBRARIES} 
145         )
146       
147       # TODO : Test that GDCM was built with option "vtkgdcm"
148       IF(USE_GDCM_VTK)
149         IF(USE_VTK)
150           SET(GDCM_LIBRARIES
151             ${GDCM_LIBRARIES}
152             vtkgdcm  
153             )
154         ENDIF(USE_VTK)
155       ENDIF(USE_GDCM_VTK)
156       
157     ENDIF(GDCM_FOUND)
158   ENDIF(NOT GDCM_FOUND)
159 ENDIF(USE_GDCM)
160
161 #-----------------------------------------------------------------------------
162
163 #-----------------------------------------------------------------------------
164 IF(USE_GDCM2)
165   IF(NOT GDCM_FOUND)
166     # Search GDCM2
167     FIND_PACKAGE(GDCM)
168     # If gdcm found
169     IF(GDCM_FOUND)
170       INCLUDE(${GDCM_USE_FILE})
171       
172       IF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
173         MESSAGE(FATAL_ERROR "gdcm version 2 needed. found ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}. Set GDCM_DIR to the gdcm version 2 directory")
174       ENDIF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
175       
176       CREA_DEFINE( USE_GDCM2 )
177       CREA_DEFINE_WITH_VAL( GDCM_NAME_SPACE gdcm )
178       
179       MESSAGE ( STATUS "=======================================")
180       MESSAGE ( STATUS "Looking for GDCM2... found")
181       MESSAGE ( STATUS "* Dir       = ${GDCM_DIR}")
182       MESSAGE ( STATUS "* Version   = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
183       MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
184       
185       # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with 
186       # embedded gdcm in ITK and will result in hard seg faults !
187       IF(USE_ITK)
188         IF (GDCM_NAME_SPACE STREQUAL "gdcm")
189           MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
190         ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
191       ENDIF(USE_ITK)
192       
193       MARK_AS_ADVANCED(GDCM_DIR)
194       
195       SET(GDCM_LIBRARIES
196         ${GDCM_LIBRARIES} 
197         )
198       
199       # TODO : Test that GDCM was built with option "vtkgdcm"
200       IF(USE_GDCM_VTK)
201         IF(USE_VTK)
202           SET(GDCM_LIBRARIES
203             ${GDCM_LIBRARIES}
204             vtkgdcm  
205             )
206         ENDIF(USE_VTK)
207       ENDIF(USE_GDCM_VTK)
208       
209     ENDIF(GDCM_FOUND)
210   ENDIF(NOT GDCM_FOUND)
211 ENDIF(USE_GDCM2)
212
213 #-----------------------------------------------------------------------------
214
215 #-----------------------------------------------------------------------------
216 IF(USE_WXWIDGETS)
217   IF(NOT wxWidgets_FOUND)
218     INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseWxWidgets.cmake)
219     CREA_FIND_WXWIDGETS(${USE_DEBUG_LIB})
220     CREA_USE_WXWIDGETS()
221   ENDIF(NOT wxWidgets_FOUND)
222 ENDIF(USE_WXWIDGETS)
223 #-----------------------------------------------------------------------------
224
225
226
227 #-----------------------------------------------------------------------------
228 IF(USE_DOXYGEN) 
229   IF(NOT DOXYGEN)
230     MESSAGE ( STATUS "=======================================")
231     FIND_PACKAGE(Doxygen REQUIRED)
232     #  MESSAGE(STATUS "Looking for doxygen... - found ${DOXYGEN}")
233     #  IF(DOXYGEN)
234     #    
235     #  ELSE(DOXYGEN)
236     #    MESSAGE(FATAL_ERROR "Doxygen not found. Required to build the doxygen documentation")
237   ENDIF(NOT DOXYGEN)
238 ENDIF(USE_DOXYGEN)
239 #-----------------------------------------------------------------------------
240
241
242 #-----------------------------------------------------------------------------
243 IF(USE_LATEX)   
244         IF (NOT LATEX_COMPILER)
245                 FIND_PACKAGE(LATEX REQUIRED)
246                 MESSAGE ( STATUS "=======================================")
247                 MESSAGE(STATUS "Looking for latex... - found ${LATEX_COMPILER}")
248         ENDIF (NOT LATEX_COMPILER)
249   
250 ENDIF(USE_LATEX) 
251 #-----------------------------------------------------------------------------
252
253 #-----------------------------------------------------------------------------
254 IF(USE_TTH) 
255   IF (NOT TTH_EXECUTABLE)
256     FIND_FILE( TTH_EXECUTABLE NAME tth tth.exe PATHS . $ENV{CREATIS}/tth_exe/ ~/Creatis/tth ~/Creatis/tth_linux $ENV{TTH}) 
257
258     IF (NOT TTH_EXECUTABLE)
259       MESSAGE(FATAL_ERROR "TTH not found (LATEX_tth_CONVERTER). Required to build the HTML documentation from tex source")
260     ELSE (NOT  TTH_EXECUTABLE)
261       MESSAGE ( STATUS "=======================================")
262       MESSAGE ( STATUS "Looking for tth... - found ${TTH_EXECUTABLE}")
263     ENDIF(NOT TTH_EXECUTABLE)
264     MARK_AS_ADVANCED( TTH_EXECUTABLE )
265   ENDIF(NOT TTH_EXECUTABLE)
266 ENDIF(USE_TTH)
267 #-----------------------------------------------------------------------------
268
269 #-----------------------------------------------------------------------------
270 IF(USE_BOOST)
271   IF(NOT Boost_FOUND)
272     FIND_PACKAGE(Boost REQUIRED)
273     IF(Boost_FOUND)
274       MESSAGE ( STATUS "=======================================")
275       MESSAGE ( STATUS "Looking for boost C++ library... - found in ${Boost_INCLUDE_DIR}")
276       INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})         
277       LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS} )
278            
279       CREA_DEFINE( USE_BOOST )
280           IF(WIN32)
281                 
282                 LINK_DIRECTORIES( ${Boost_INCLUDE_DIRS}/stage/lib) #JCP 01/10/2009
283                 #LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS})
284                 #MESSAGE ("EED " ${Boost_LIBRARY_DIRS})
285                 #libboost_signals-vc71-mt-1_37
286                 #libboost_filesystem-vc71-mt-1_37
287                 #boost_date_time-vc71-mt-1_37
288         
289                 #message("creamacro find and use lib = ${Boost_SIGNALS_LIBRARY}")
290                 IF(USE_DEBUG_LIB)
291                         SET(BOOST_LIBRARIES
292                                 boost_signals-vc90-mt-gd-1_40
293                                 boost_filesystem-vc90-mt-gd-1_40
294                                 boost_date_time-vc90-mt-gd-1_40                    
295                            #what about boost_thread? JPR
296                         )
297                 ELSE(NOT USE_DEBUG_LIB)
298                         SET(BOOST_LIBRARIES
299                                 boost_signals-vc90-mt-1_40
300                                 boost_filesystem-vc90-mt-1_40
301                                 boost_date_time-vc90-mt-1_40
302                         )
303                 ENDIF(USE_DEBUG_LIB)
304           ENDIF(WIN32)
305       IF(NOT WIN32)
306         IF(APPLE)
307                   SET(BOOST_LIBRARIES
308                         boost_signals
309                         boost_filesystem
310                                 boost_date_time
311                         boost_program_options
312                         boost_regex
313                         boost_thread
314                         )
315         ELSE(NOT APPLE)
316                   SET(BOOST_LIBRARIES
317                         boost_signals-mt
318                         boost_filesystem-mt
319                         boost_date_time-mt
320                                 boost_system-mt
321                         boost_program_options-mt
322                         boost_regex-mt
323                         boost_thread-mt     
324                         )
325         ENDIF(APPLE)    
326       ENDIF(NOT WIN32)
327           
328       MARK_AS_ADVANCED(Boost_INCLUDE_DIR)
329     ELSE(Boost_FOUND)
330       MESSAGE(FATAL_ERROR "boost C++ library not found - Set Boost_INCLUDE_DIR to the directory containing boost headers")
331     ENDIF(Boost_FOUND)
332   ENDIF(NOT Boost_FOUND)
333 ENDIF(USE_BOOST)
334 #-----------------------------------------------------------------------------
335
336 IF(USE_XERCES)
337
338         # FIND xerces
339         IF(WIN32)
340         
341                 SET(XERCES_LIB_DIR $ENV{XERCES_DIR})
342                  
343                 IF(NOT XERCES_LIB_DIR)  
344                   MESSAGE(FATAL_ERROR "XERCES_DIR not found")  
345                 ELSE(NOT XERCES_LIB_DIR)
346                   
347                 INCLUDE_DIRECTORIES( ${XERCES_LIB_DIR}/src )            
348                 LINK_DIRECTORIES(  ${XERCES_LIB_DIR}/Build/Win32/VC9/Debug )
349                   
350                 ENDIF(NOT XERCES_LIB_DIR)       
351                 
352                 IF(USE_DEBUG_LIB)
353                         set(XERCES_LIBRARIES  ${XERCES_LIB_DIR}/Build/Win32/VC9/Debug/xerces-c_3D)
354                 ELSE(USE_DEBUG_LIB)
355                         set(XERCES_LIBRARIES  ${XERCES_LIB_DIR}/Build/Win32/VC9/Release/xerces-c_3)
356                 ENDIF(USE_DEBUG_LIB)
357                 
358                 MARK_AS_ADVANCED(XERCES_LIB_DIR)
359         ENDIF(WIN32)
360
361
362         IF(UNIX)
363                 
364                 SET(XERCES_LIBRARIES libxerces-c.so )
365                  INCLUDE_DIRECTORIES( /usr/local/include )
366                  LINK_DIRECTORIES(  /usr/local/lib ) 
367                 #FIND_PACKAGE(Xerces)
368                 # Use if found
369                 #IF(Xerces_FOUND)
370                  #  INCLUDE_DIRECTORIES( ${XERCES_INCLUDE_DIR} ) 
371                 #ENDIF(Xerces_FOUND)            
372         ENDIF(UNIX)
373         
374         
375   
376 ENDIF(USE_XERCES)
377
378
379 ENDMACRO(CREA_FIND_AND_USE_LIBRARIES)