FindG2O.cmake 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. # Find the header files
  2. FIND_PATH(G2O_INCLUDE_DIR g2o/core/base_vertex.h
  3. ${G2O_ROOT}/include
  4. $ENV{G2O_ROOT}/include
  5. $ENV{G2O_ROOT}
  6. /usr/local/include
  7. /usr/include
  8. /opt/local/include
  9. /sw/local/include
  10. /sw/include
  11. /opt/ros/$ENV{ROS_DISTRO}/include
  12. NO_DEFAULT_PATH
  13. )
  14. # Macro to unify finding both the debug and release versions of the
  15. # libraries; this is adapted from the OpenSceneGraph FIND_LIBRARY
  16. # macro.
  17. MACRO(FIND_G2O_LIBRARY MYLIBRARY MYLIBRARYNAME)
  18. FIND_LIBRARY("${MYLIBRARY}_DEBUG"
  19. NAMES "g2o_${MYLIBRARYNAME}_d"
  20. PATHS
  21. ${G2O_ROOT}/lib/Debug
  22. ${G2O_ROOT}/lib
  23. $ENV{G2O_ROOT}/lib/Debug
  24. $ENV{G2O_ROOT}/lib
  25. /opt/ros/$ENV{ROS_DISTRO}/lib
  26. NO_DEFAULT_PATH
  27. )
  28. FIND_LIBRARY("${MYLIBRARY}_DEBUG"
  29. NAMES "g2o_${MYLIBRARYNAME}_d"
  30. PATHS
  31. ~/Library/Frameworks
  32. /Library/Frameworks
  33. /usr/local/lib
  34. /usr/local/lib64
  35. /usr/lib
  36. /usr/lib64
  37. /opt/local/lib
  38. /sw/local/lib
  39. /sw/lib
  40. )
  41. FIND_LIBRARY(${MYLIBRARY}
  42. NAMES "g2o_${MYLIBRARYNAME}"
  43. PATHS
  44. ${G2O_ROOT}/lib/Release
  45. ${G2O_ROOT}/lib
  46. $ENV{G2O_ROOT}/lib/Release
  47. $ENV{G2O_ROOT}/lib
  48. /opt/ros/$ENV{ROS_DISTRO}/lib
  49. NO_DEFAULT_PATH
  50. )
  51. FIND_LIBRARY(${MYLIBRARY}
  52. NAMES "g2o_${MYLIBRARYNAME}"
  53. PATHS
  54. ~/Library/Frameworks
  55. /Library/Frameworks
  56. /usr/local/lib
  57. /usr/local/lib64
  58. /usr/lib
  59. /usr/lib64
  60. /opt/local/lib
  61. /sw/local/lib
  62. /sw/lib
  63. )
  64. IF(NOT ${MYLIBRARY}_DEBUG)
  65. IF(MYLIBRARY)
  66. SET(${MYLIBRARY}_DEBUG ${MYLIBRARY})
  67. ENDIF(MYLIBRARY)
  68. ENDIF( NOT ${MYLIBRARY}_DEBUG)
  69. ENDMACRO(FIND_G2O_LIBRARY LIBRARY LIBRARYNAME)
  70. # Find the core elements
  71. FIND_G2O_LIBRARY(G2O_STUFF_LIBRARY stuff)
  72. FIND_G2O_LIBRARY(G2O_CORE_LIBRARY core)
  73. # Find the CLI library
  74. FIND_G2O_LIBRARY(G2O_CLI_LIBRARY cli)
  75. # Find the pluggable solvers
  76. FIND_G2O_LIBRARY(G2O_SOLVER_CHOLMOD solver_cholmod)
  77. FIND_G2O_LIBRARY(G2O_SOLVER_CSPARSE solver_csparse)
  78. FIND_G2O_LIBRARY(G2O_SOLVER_CSPARSE_EXTENSION csparse_extension)
  79. FIND_G2O_LIBRARY(G2O_SOLVER_DENSE solver_dense)
  80. FIND_G2O_LIBRARY(G2O_SOLVER_PCG solver_pcg)
  81. FIND_G2O_LIBRARY(G2O_SOLVER_SLAM2D_LINEAR solver_slam2d_linear)
  82. FIND_G2O_LIBRARY(G2O_SOLVER_STRUCTURE_ONLY solver_structure_only)
  83. FIND_G2O_LIBRARY(G2O_SOLVER_EIGEN solver_eigen)
  84. # Find the predefined types
  85. FIND_G2O_LIBRARY(G2O_TYPES_DATA types_data)
  86. FIND_G2O_LIBRARY(G2O_TYPES_ICP types_icp)
  87. FIND_G2O_LIBRARY(G2O_TYPES_SBA types_sba)
  88. FIND_G2O_LIBRARY(G2O_TYPES_SCLAM2D types_sclam2d)
  89. FIND_G2O_LIBRARY(G2O_TYPES_SIM3 types_sim3)
  90. FIND_G2O_LIBRARY(G2O_TYPES_SLAM2D types_slam2d)
  91. FIND_G2O_LIBRARY(G2O_TYPES_SLAM3D types_slam3d)
  92. FIND_G2O_LIBRARY(G2O_TYPES_SLAM3D_ADDONS types_slam3d_addons)
  93. # G2O solvers declared found if we found at least one solver
  94. SET(G2O_SOLVERS_FOUND "NO")
  95. IF(G2O_SOLVER_CHOLMOD OR G2O_SOLVER_CSPARSE OR G2O_SOLVER_DENSE OR G2O_SOLVER_PCG OR G2O_SOLVER_SLAM2D_LINEAR OR G2O_SOLVER_STRUCTURE_ONLY OR G2O_SOLVER_EIGEN)
  96. SET(G2O_SOLVERS_FOUND "YES")
  97. ENDIF(G2O_SOLVER_CHOLMOD OR G2O_SOLVER_CSPARSE OR G2O_SOLVER_DENSE OR G2O_SOLVER_PCG OR G2O_SOLVER_SLAM2D_LINEAR OR G2O_SOLVER_STRUCTURE_ONLY OR G2O_SOLVER_EIGEN)
  98. # G2O itself declared found if we found the core libraries and at least one solver
  99. SET(G2O_FOUND "NO")
  100. IF(G2O_STUFF_LIBRARY AND G2O_CORE_LIBRARY AND G2O_INCLUDE_DIR AND G2O_SOLVERS_FOUND)
  101. SET(G2O_FOUND "YES")
  102. ENDIF(G2O_STUFF_LIBRARY AND G2O_CORE_LIBRARY AND G2O_INCLUDE_DIR AND G2O_SOLVERS_FOUND)