3 MACRO(CREA_FIND_AND_USE_LIBRARIES)
10 set(USE_DEBUG_LIB "" CACHE BOOL "Use Debug Libraries" )
12 #-----------------------------------------------------------------------------
13 # If one can invoke this macro then crea has already been found !!
14 # However if one whishes to link against crea and crea was built
15 # with wx or vtk then we have to find them.
16 # This USE_CREA var is made to resolve this dependency.
18 IF(CREA_BUILT_WITH_WX)
20 ENDIF(CREA_BUILT_WITH_WX)
21 IF(CREA_BUILT_WITH_VTK)
23 ENDIF(CREA_BUILT_WITH_VTK)
25 #-----------------------------------------------------------------------------
28 #-----------------------------------------------------------------------------
33 INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseQt.cmake)
34 #FIND_PACKAGE(Qt4 REQUIRED)
37 MESSAGE ( STATUS "=======================================")
38 MESSAGE ( STATUS "Looking for QT4... found")
39 MESSAGE ( STATUS "* Inc Dir = ${QT_INCLUDE_DIR}")
40 MESSAGE ( STATUS "* Version = ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")
41 INCLUDE(${QT_USE_FILE})
51 #MESSAGE ( "======================================= SET CMAKE USE_WT JFGA CREAMacro_FindAndUseLibraries.cmake")
55 #-----------------------------------------------------------------------------
57 #-----------------------------------------------------------------------------
59 INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseVTK.cmake)
60 CREA_FIND_AND_USE_VTK()
62 #-----------------------------------------------------------------------------
64 #-----------------------------------------------------------------------------
67 set(CMAKE_THREAD_LIBS_INIT "-lpthread")
68 set(CMAKE_HAVE_THREADS_LIBRARY 1)
69 set(CMAKE_USE_WIN32_THREADS_INIT 0)
70 set(CMAKE_USE_PTHREADS_INIT 1)
71 set(THREADS_PREFER_PTHREAD_FLAG ON)
73 find_package(Threads REQUIRED)
77 if(CMAKE_C_COMPILER_ID MATCHES "Clang")
78 set(OpenMP_C "${CMAKE_C_COMPILER}")
79 set(OpenMP_C_FLAGS "-Xclang -fopenmp=libomp -Wno-unused-command-line-argument")
80 set(OpenMP_C_LIB_NAMES "libomp" "libgomp" "libiomp5")
81 set(OpenMP_libomp_LIBRARY ${OpenMP_C_LIB_NAMES})
82 set(OpenMP_libgomp_LIBRARY ${OpenMP_C_LIB_NAMES})
83 set(OpenMP_libiomp5_LIBRARY ${OpenMP_C_LIB_NAMES})
85 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
86 set(OpenMP_CXX "${CMAKE_CXX_COMPILER}")
87 # set(OpenMP_CXX_FLAGS "-fopenmp=libomp -Wno-unused-command-line-argument")
88 set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -Wno-unused-command-line-argument")
89 set(OpenMP_CXX_LIB_NAMES "libomp" "libgomp" "libiomp5")
90 set(OpenMP_libomp_LIBRARY ${OpenMP_CXX_LIB_NAMES})
92 set(OpenMP_libomp_LIBRARY_crea libomp.dylib )
93 # set(OpenMP_libiomp5_LIBRARY ${OpenMP_CXX_LIB_NAMES})
96 find_package(OpenMP REQUIRED)
98 # include_directories("${OPENMP_INCLUDES}")
100 message(EEE oooopppeeennnn OPENMP_LIBRARIES ${OPENMP_LIBRARIES} )
101 message(EEE oooopppeeennnn OPENMP_LIBRARIES ${OPENMP_LIBRARIES} )
102 message(EEE oooopppeeennnn OPENMP_LIBRARIES ${OPENMP_LIBRARIES} )
103 message(EEE oooopppeeennnn OPENMP_LIBRARIES ${OPENMP_LIBRARIES} )
104 message(EEE oooopppeeennnn OPENMP_LIBRARIES ${OPENMP_LIBRARIES} )
105 message(EEE oooopppeeennnn OPENMP_LIBRARIES ${OPENMP_LIBRARIES} )
106 message(EEE oooopppeeennnn OPENMP_LIBRARIES ${OPENMP_LIBRARIES} )
108 link_directories( /opt/local/lib/libomp )
109 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
110 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
111 # set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
117 #-----------------------------------------------------------------------------
121 #-----------------------------------------------------------------------------
123 IF(NOT KWWidgets_FOUND)
125 FIND_PACKAGE(KWWidgets)
128 MESSAGE ( STATUS "=======================================")
129 MESSAGE ( STATUS "Looking for KWWidgets... found")
130 MESSAGE ( STATUS "* Dir = ${KWWidgets_DIR}")
131 MESSAGE ( STATUS "* Version = ${KWWidgets_MAJOR_VERSION}.${KWWidgets_MINOR_VERSION}.${KWWidgets_BUILD_VERSION}")
133 # KWWidgets must not search again for vtk !
134 SET(KWWidgets_NO_USE_VTK ON)
137 INCLUDE(${KWWidgets_USE_FILE})
138 CREA_DEFINE( USE_KWWIDGETS )
139 SET(KWWIDGETS_LIBRARIES
140 ${KWWidgets_LIBRARIES}
142 MARK_AS_ADVANCED(KWWidgets_DIR)
143 ELSE(KWWidgets_FOUND)
144 message(FATAL_ERROR "KWWidgets_DIR not found")
145 ENDIF(KWWidgets_FOUND)
146 ENDIF(NOT KWWidgets_FOUND)
148 #-----------------------------------------------------------------------------
150 # --- W A R N I N G :
151 # Always let ITK *BEFORE* GDCM
152 # It allows to use 'system installed gdcm' instead of 'itk embedded gdcm'
155 #-----------------------------------------------------------------------------
163 MESSAGE ( STATUS "=======================================")
164 MESSAGE ( STATUS "Looking for ITK... found")
165 MESSAGE ( STATUS "* Dir = ${ITK_DIR}")
166 MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
167 SET(SKIP_ITK_BUILD_SETTINGS_FILE ON)
168 INCLUDE(${ITK_USE_FILE})
169 CREA_DEFINE( USE_ITK )
170 CREA_DEFINE( _USE_ITK_ )
171 If (${ITK_VERSION_MAJOR} MATCHES "4" OR ${ITK_VERSION_MAJOR} MATCHES "5" )
172 MESSAGE ( STATUS "* Version = ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")
173 SET(ITK_LIBRARIES ${ITK_LIBRARIES})
174 MESSAGE ( STATUS "${ITK_LIBRARIES}")
176 SET(ITK_LIBRARIES ITKCommon ITKIO ITKBasicFilters ITKAlgorithms)
178 MARK_AS_ADVANCED(ITK_DIR)
180 message(FATAL_ERROR "ITK_DIR not found")
184 #-----------------------------------------------------------------------------
187 #-----------------------------------------------------------------------------
191 MESSAGE(ERROR "CANNOT USE BOTH gdcm AND gdcm2 !")
199 INCLUDE(${GDCM_USE_FILE})
200 CREA_DEFINE( USE_GDCM )
202 MESSAGE ( STATUS "=======================================")
203 MESSAGE ( STATUS "Looking for GDCM... found")
204 MESSAGE ( STATUS "* Dir = ${GDCM_DIR}")
205 MESSAGE ( STATUS "* Version = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
206 MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
208 # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with
209 # embedded gdcm in ITK and will result in hard seg faults !
211 IF (GDCM_NAME_SPACE STREQUAL "gdcm")
212 MESSAGE(FATAL_ERROR "GDCM_NAME_SPACE value is 'gdcm' which conflicts with ITK embededd gdcm namespace : rebuild gdcm with another GDCM_NAME_SPACE value")
213 ENDIF (GDCM_NAME_SPACE STREQUAL "gdcm")
216 MARK_AS_ADVANCED(GDCM_DIR)
222 # TODO : Test that GDCM was built with option "vtkgdcm"
233 MESSAGE(FATAL_ERROR "GDCM not found....")
236 ENDIF(NOT GDCM_FOUND)
239 #-----------------------------------------------------------------------------
243 MESSAGE(ERROR "CANNOT USE BOTH gdcm AND gdcm2 !")
246 # IF(NOT USE_ITK) # JPR : ITK vs GDCM (avoid cmake break)
249 FIND_PACKAGE(GDCM REQUIRED)
250 INCLUDE(${GDCM_USE_FILE})
252 IF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
253 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")
254 ENDIF(NOT ${GDCM_MAJOR_VERSION} EQUAL 2)
256 CREA_DEFINE( USE_GDCM2 )
257 MARK_AS_ADVANCED(GDCM_DIR)
258 CREA_DEFINE_WITH_VAL( GDCM_NAME_SPACE gdcm )
260 MESSAGE ( STATUS "=======================================")
261 MESSAGE ( STATUS "Looking for GDCM2... found")
262 MESSAGE ( STATUS "* Dir = ${GDCM_DIR}")
263 MESSAGE ( STATUS "* Version = ${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}.${GDCM_BUILD_VERSION}")
264 MESSAGE ( STATUS "* Namespace = ${GDCM_NAME_SPACE}")
266 # Test that GDCM_NAME_SPACE is **NOT** "gdcm" or will conflict with
267 # embedded gdcm in ITK and will result in hard seg faults !
268 INCLUDE_DIRECTORIES(${GDCM_INCLUDE_DIRS})
269 LINK_DIRECTORIES( ${GDCM_LIBRARY_DIRS})
306 # ENDIF(NOT USE_ITK) # JPR : ITK vs GDCM (avoid cmake break)
310 #-----------------------------------------------------------------------------
312 #-----------------------------------------------------------------------------
314 #-------------------- JFGA ---
316 MESSAGE ( "======================================= JFGA ------------USE WT CREAMacro_FindAndUseLibraries.cmake")
317 INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseWt.cmake)
321 #-----------------------------------------------------------------------------
323 IF(NOT wxWidgets_FOUND)
325 INCLUDE(${CREA_CMAKE_DIR}/CREAMacro_FindAndUseWxWidgets.cmake)
326 CREA_FIND_WXWIDGETS(${USE_DEBUG_LIB})
331 ENDIF(NOT wxWidgets_FOUND)
333 #-----------------------------------------------------------------------------
337 #-----------------------------------------------------------------------------
340 MESSAGE ( STATUS "=======================================")
341 FIND_PACKAGE(Doxygen REQUIRED)
342 # MESSAGE(STATUS "Looking for doxygen... - found ${DOXYGEN}")
346 # MESSAGE(FATAL_ERROR "Doxygen not found. Required to build the doxygen documentation")
349 #-----------------------------------------------------------------------------
352 #-----------------------------------------------------------------------------
354 IF (NOT LATEX_COMPILER)
355 FIND_PACKAGE(LATEX REQUIRED)
356 MESSAGE ( STATUS "=======================================")
357 MESSAGE(STATUS "Looking for latex... - found ${LATEX_COMPILER}")
359 MESSAGE(FATAL_ERROR "LATEX_COMPILER NOT FOUND. Example:latex (MacOS:/opt/local/bin/latex)")
360 ENDIF (NOT LATEX_FOUND)
361 ENDIF (NOT LATEX_COMPILER)
364 #-----------------------------------------------------------------------------
366 #-----------------------------------------------------------------------------
368 IF (NOT TTH_EXECUTABLE)
369 FIND_FILE( TTH_EXECUTABLE NAME tth tth.exe PATHS . $ENV{CREATIS}/tth_exe/ ~/Creatis/tth ~/Creatis/tth_linux $ENV{TTH})
371 IF (NOT TTH_EXECUTABLE)
372 MESSAGE(FATAL_ERROR "TTH not found (LATEX_tth_CONVERTER). Required to build the HTML documentation from tex source")
373 ELSE (NOT TTH_EXECUTABLE)
374 MESSAGE ( STATUS "=======================================")
375 MESSAGE ( STATUS "Looking for tth... - found ${TTH_EXECUTABLE}")
376 ENDIF(NOT TTH_EXECUTABLE)
377 MARK_AS_ADVANCED( TTH_EXECUTABLE )
378 ENDIF(NOT TTH_EXECUTABLE)
380 #-----------------------------------------------------------------------------
381 #-----------------------------------------------------------------------------
384 add_definitions( -DBOOST_ALL_NO_LIB )
385 add_definitions( -DBOOST_ALL_DYN_LINK )
388 FIND_PACKAGE(Boost COMPONENTS filesystem-mgw71 system-mgw71 signals-mgw71 date_time-mgw71 thread-mgw71 regex-mgw71 program_options-mgw71 REQUIRED)
390 set( Boost_INCLUDE_DIR $ENV{BOOST_ROOT}/include/boost-1_69)
391 FIND_PACKAGE(Boost COMPONENTS filesystem-mgw122-mt-x64-1_69 system-mgw122-mt-x64-1_69 date_time-mgw122-mt-x64-1_69 thread-mgw122-mt-x64-1_69 regex-mgw122-mt-x64-1_69 program_options-mgw122-mt-x64-1_69 REQUIRED)
394 # FIND_PACKAGE(Boost COMPONENTS filesystem system signals date_time thread regex program_options REQUIRED)
396 # FIND_PACKAGE(Boost COMPONENTS filesystem system date_time thread regex program_options REQUIRED)
397 FIND_PACKAGE(Boost COMPONENTS filesystem system date_time regex program_options REQUIRED)
400 ADD_DEFINITIONS(-DBOOST_FILESYSTEM_VERSION=3)
401 ADD_DEFINITIONS(-DBOOST_MAYOR_VERSION=${Boost_MAJOR_VERSION})
402 ADD_DEFINITIONS(-DBOOST_MINOR_VERSION=${Boost_MINOR_VERSION})
403 MESSAGE ( STATUS "=======================================")
404 MESSAGE ( STATUS "Looking for boost C++ library... - found in ${Boost_INCLUDE_DIR}")
405 INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
406 LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS})
408 CREA_DEFINE( USE_BOOST )
409 ADD_DEFINITIONS(-DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED)
414 # FCY with cmake boost, it's useless.
415 # But if it is not working, uncomment
418 # SET(BOOST_LIBRARIES
419 # boost_signals-vc90-mt-gd-1_40
420 # boost_filesystem-vc90-mt-gd-1_40
421 # boost_date_time-vc90-mt-gd-1_40
422 # #what about boost_thread? JPR
424 # ELSE(NOT USE_DEBUG_LIB)
425 # SET(BOOST_LIBRARIES
426 # boost_signals-vc90-mt-1_40
427 # boost_filesystem-vc90-mt-1_40
428 # boost_date_time-vc90-mt-1_40
430 # ENDIF(USE_DEBUG_LIB)
433 message("EED 2021 CREAMacro_FindAndUseLibraries " ${Boost_LIBRARIES} )
441 #EED boost_program_options-mt
444 #EED boost_signals-mt
445 #EED boost_filesystem-mt
446 #EED boost_date_time-mt
448 #EED boost_program_options-mt
455 MARK_AS_ADVANCED(Boost_INCLUDE_DIR)
456 MARK_AS_ADVANCED(Boost_LIBRARY_DIRS)
459 MESSAGE( STATUS "boost C++ library not found - Set Boost_INCLUDE_DIR to the directory containing boost headers")
461 ENDIF(NOT Boost_FOUND)
465 #-----------------------------------------------------------
472 SET(XERCES_LIB_DIR $ENV{XERCES_DIR})
474 IF(NOT XERCES_LIB_DIR)
475 MESSAGE(FATAL_ERROR "XERCES_DIR not found")
476 ELSE(NOT XERCES_LIB_DIR)
478 INCLUDE_DIRECTORIES( ${XERCES_LIB_DIR}/include )
479 LINK_DIRECTORIES( ${XERCES_LIB_DIR}/lib )
481 ENDIF(NOT XERCES_LIB_DIR)
485 set(XERCES_LIBRARIES xerces-c_3D)
487 set(XERCES_LIBRARIES xerces-c_3)
491 #EED 2019-07-03 set(XERCES_LIBRARIES xerces-c_3D)
492 set(XERCES_LIBRARIES xerces-c)
494 #EED 2019-07-03 set(XERCES_LIBRARIES xerces-c_3)
495 set(XERCES_LIBRARIES xerces-c)
499 MARK_AS_ADVANCED(XERCES_LIB_DIR)
505 SET(XERCES_LIBRARIES xerces-c )
506 INCLUDE_DIRECTORIES( /opt/local/include )
507 LINK_DIRECTORIES( /opt/local/lib )
510 SET(XERCES_LIBRARIES xerces-c )
511 INCLUDE_DIRECTORIES( /usr/local/include )
512 LINK_DIRECTORIES( /usr/local/lib /usr/lib)
513 #FIND_PACKAGE(Xerces)
516 # INCLUDE_DIRECTORIES( ${XERCES_INCLUDE_DIR} )
524 ENDMACRO(CREA_FIND_AND_USE_LIBRARIES)