FindLIBIGL.cmake 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. # - Try to find the LIBIGL library
  2. # Once done this will define
  3. #
  4. # LIBIGL_FOUND - system has LIBIGL
  5. # LIBIGL_INCLUDE_DIR - **the** LIBIGL include directory
  6. # LIBIGL_INCLUDE_DIRS - LIBIGL include directories
  7. # LIBIGL_SOURCES - the LIBIGL source files
  8. if(NOT LIBIGL_FOUND)
  9. FIND_PATH(LIBIGL_INCLUDE_DIR igl/readOBJ.h
  10. ${PROJECT_SOURCE_DIR}/../../include
  11. ${PROJECT_SOURCE_DIR}/../include
  12. ${PROJECT_SOURCE_DIR}/include
  13. ${PROJECT_SOURCE_DIR}/../libigl/include
  14. ${PROJECT_SOURCE_DIR}/../../libigl/include
  15. $ENV{LIBIGL}/include
  16. $ENV{LIBIGLROOT}/include
  17. $ENV{LIBIGL_ROOT}/include
  18. $ENV{LIBIGL_DIR}/include
  19. $ENV{LIBIGL_DIR}/inc
  20. /usr/include
  21. /usr/local/include
  22. /usr/local/igl/libigl/include
  23. )
  24. if(LIBIGL_INCLUDE_DIR)
  25. set(LIBIGL_FOUND TRUE)
  26. set(LIBIGL_INCLUDE_DIRS ${LIBIGL_INCLUDE_DIR} ${LIBIGL_INCLUDE_DIR}/../external/Singular_Value_Decomposition)
  27. #set(LIBIGL_SOURCES
  28. # ${LIBIGL_INCLUDE_DIR}/igl/viewer/Viewer.cpp
  29. #)
  30. endif(LIBIGL_INCLUDE_DIR)
  31. if(LIBIGL_USE_STATIC_LIBRARY)
  32. add_definitions(-DIGL_STATIC_LIBRARY)
  33. set(LIBIGL_LIB_DIRS
  34. ${CMAKE_BINARY_DIR}/
  35. ${PROJECT_SOURCE_DIR}/../../lib
  36. ${PROJECT_SOURCE_DIR}/../lib
  37. ${PROJECT_SOURCE_DIR}/lib
  38. ${PROJECT_SOURCE_DIR}/../../libigl/lib
  39. ${PROJECT_SOURCE_DIR}/../libigl/lib
  40. $ENV{LIBIGL}/lib
  41. $ENV{LIBIGLROOT}/lib
  42. $ENV{LIBIGL_ROOT}/lib
  43. $ENV{LIBIGL_DIR}/lib
  44. /usr/lib
  45. /usr/local/lib)
  46. FIND_LIBRARY( LIBIGL_LIBRARY NAMES igl PATHS ${LIBIGL_LIB_DIRS})
  47. # try to find pre-requisites
  48. find_package(CORK QUIET)
  49. find_package(CGAL QUIET)
  50. find_package(EMBREE QUIET)
  51. find_package(LIBCOMISO QUIET)
  52. find_package(MATLAB QUIET)
  53. find_package(MOSEK QUIET)
  54. find_package(TETGEN QUIET)
  55. find_package(TINYXML2 QUIET)
  56. find_package(TRIANGLE QUIET)
  57. # Main library must be found
  58. if(NOT LIBIGL_LIBRARY)
  59. set(LIBIGL_FOUND FALSE)
  60. message(FATAL_ERROR "could NOT find libigl")
  61. endif(NOT LIBIGL_LIBRARY)
  62. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGL_LIBRARY})
  63. # libiglbbw will work with/without mosek
  64. FIND_LIBRARY( LIBIGLBBW_LIBRARY NAMES iglbbw PATHS ${LIBIGL_LIB_DIRS})
  65. if(NOT LIBIGLBBW_LIBRARY)
  66. set(LIBIGL_FOUND FALSE)
  67. message(FATAL_ERROR "could NOT find libiglbbw")
  68. endif(NOT LIBIGLBBW_LIBRARY)
  69. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLBBW_LIBRARY})
  70. if(LIBCOMISO_FOUND)
  71. FIND_LIBRARY(LIBIGLCOMISO_LIBRARY NAMES iglcomiso PATHS ${LIBIGL_LIB_DIRS})
  72. if(NOT LIBIGLCOMISO_LIBRARY)
  73. set(LIBIGL_FOUND FALSE)
  74. message(FATAL_ERROR "could NOT find libiglcomiso")
  75. endif(NOT LIBIGLCOMISO_LIBRARY)
  76. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLCOMISO_LIBRARY})
  77. endif(LIBCOMISO_FOUND)
  78. if(CGAL_FOUND)
  79. FIND_LIBRARY( LIBIGLBOOLEAN_LIBRARY NAMES iglboolean PATHS ${LIBIGL_LIB_DIRS})
  80. if(NOT LIBIGLBOOLEAN_LIBRARY)
  81. message(FATAL_ERROR "could NOT find libiglboolean ")
  82. endif(NOT LIBIGLBOOLEAN_LIBRARY)
  83. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLBOOLEAN_LIBRARY})
  84. FIND_LIBRARY( LIBIGLCGAL_LIBRARY NAMES iglcgal PATHS ${LIBIGL_LIB_DIRS})
  85. if(NOT LIBIGLCGAL_LIBRARY)
  86. set(LIBIGL_FOUND FALSE)
  87. message(FATAL_ERROR "could NOT find libiglcgal")
  88. endif(NOT LIBIGLCGAL_LIBRARY)
  89. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLCGAL_LIBRARY})
  90. endif(CGAL_FOUND)
  91. if(EMBREE_FOUND)
  92. FIND_LIBRARY( LIBIGLEMBREE_LIBRARY NAMES iglembree PATHS ${LIBIGL_LIB_DIRS})
  93. if(NOT LIBIGLEMBREE_LIBRARY)
  94. set(LIBIGL_FOUND FALSE)
  95. message(FATAL_ERROR "could NOT find libiglembree")
  96. endif(NOT LIBIGLEMBREE_LIBRARY)
  97. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLEMBREE_LIBRARY})
  98. endif(EMBREE_FOUND)
  99. if(LIM_FOUND)
  100. FIND_LIBRARY( LIBIGLLIM_LIBRARY NAMES igllim PATHS ${LIBIGL_LIB_DIRS})
  101. if(NOT LIBIGLLIM_LIBRARY)
  102. set(LIBIGL_FOUND FALSE)
  103. message(FATAL_ERROR "could NOT find libigllim")
  104. endif(NOT LIBIGLLIM_LIBRARY)
  105. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLLIM_LIBRARY})
  106. endif(LIM_FOUND)
  107. if(MATLAB_FOUND)
  108. FIND_LIBRARY( LIBIGLMATLAB_LIBRARY NAMES iglmatlab PATHS ${LIBIGL_LIB_DIRS})
  109. if(NOT LIBIGLMATLAB_LIBRARY)
  110. set(LIBIGL_FOUND FALSE)
  111. message(FATAL_ERROR "could NOT find libiglmatlab")
  112. endif(NOT LIBIGLMATLAB_LIBRARY)
  113. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLMATLAB_LIBRARY})
  114. endif(MATLAB_FOUND)
  115. # mosek support should be determined before trying to find bbw
  116. if(MOSEK_FOUND)
  117. FIND_LIBRARY( LIBIGLMOSEK_LIBRARY NAMES iglmosek PATHS ${LIBIGL_LIB_DIRS})
  118. if(NOT LIBIGLMOSEK_LIBRARY)
  119. set(LIBIGL_FOUND FALSE)
  120. message(FATAL_ERROR "could NOT find libiglmosek")
  121. endif(NOT LIBIGLMOSEK_LIBRARY)
  122. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLMOSEK_LIBRARY})
  123. endif(MOSEK_FOUND)
  124. if(TETGEN_FOUND)
  125. FIND_LIBRARY( LIBIGLTETGEN_LIBRARY NAMES igltetgen PATHS ${LIBIGL_LIB_DIRS})
  126. if(NOT LIBIGLTETGEN_LIBRARY)
  127. set(LIBIGL_FOUND FALSE)
  128. message(FATAL_ERROR "could NOT find libigltetgen")
  129. endif(NOT LIBIGLTETGEN_LIBRARY)
  130. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLTETGEN_LIBRARY})
  131. endif(TETGEN_FOUND)
  132. if(TINYXML2_FOUND)
  133. FIND_LIBRARY( LIBIGLXML_LIBRARY NAMES iglxml PATHS ${LIBIGL_LIB_DIRS})
  134. if(NOT LIBIGLXML_LIBRARY)
  135. set(LIBIGL_FOUND FALSE)
  136. message(FATAL_ERROR "could NOT find libiglxml")
  137. endif(NOT LIBIGLXML_LIBRARY)
  138. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLXML_LIBRARY})
  139. endif(TINYXML2_FOUND)
  140. if(TRIANGLE_FOUND)
  141. FIND_LIBRARY( LIBIGLTRIANGLE_LIBRARY NAMES igltriangle PATHS ${LIBIGL_LIB_DIRS})
  142. if(NOT LIBIGLTRIANGLE_LIBRARY)
  143. set(LIBIGL_FOUND FALSE)
  144. message(FATAL_ERROR "could NOT find libigltriangle")
  145. endif(NOT LIBIGLTRIANGLE_LIBRARY)
  146. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLTRIANGLE_LIBRARY})
  147. endif(TRIANGLE_FOUND)
  148. # libiglviewer is required
  149. FIND_LIBRARY( LIBIGLVIEWER_LIBRARY NAMES iglviewer PATHS ${LIBIGL_LIB_DIRS})
  150. if(NOT LIBIGLVIEWER_LIBRARY)
  151. set(LIBIGL_FOUND FALSE)
  152. message(FATAL_ERROR "could NOT find libiglviewer")
  153. endif(NOT LIBIGLVIEWER_LIBRARY)
  154. set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} ${LIBIGLVIEWER_LIBRARY})
  155. find_package(OpenMP)
  156. if (OPENMP_FOUND)
  157. set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
  158. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
  159. endif(OPENMP_FOUND)
  160. endif(LIBIGL_USE_STATIC_LIBRARY)
  161. if(LIBIGL_FOUND)
  162. if(NOT LIBIGL_FIND_QUIETLY)
  163. message(STATUS "Found LIBIGL: ${LIBIGL_INCLUDE_DIR}")
  164. endif(NOT LIBIGL_FIND_QUIETLY)
  165. else(LIBIGL_FOUND)
  166. if(LIBIGL_FIND_REQUIRED)
  167. message(FATAL_ERROR "could NOT find LIBIGL")
  168. endif(LIBIGL_FIND_REQUIRED)
  169. endif(LIBIGL_FOUND)
  170. MARK_AS_ADVANCED(LIBIGL_INCLUDE_DIRS LIBIGL_INCLUDE_DIR LIBIGL_LIBRARIES IGL_VIEWER_SOURCES)
  171. endif(NOT LIBIGL_FOUND)