FindVTK.cmake 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. # - Find a VTK installation or build tree.
  2. # The following variables are set if VTK is found. If VTK is not
  3. # found, VTK_FOUND is set to false.
  4. # VTK_FOUND - Set to true when VTK is found.
  5. # VTK_USE_FILE - CMake file to use VTK.
  6. # VTK_MAJOR_VERSION - The VTK major version number.
  7. # VTK_MINOR_VERSION - The VTK minor version number
  8. # (odd non-release).
  9. # VTK_BUILD_VERSION - The VTK patch level
  10. # (meaningless for odd minor).
  11. # VTK_INCLUDE_DIRS - Include directories for VTK
  12. # VTK_LIBRARY_DIRS - Link directories for VTK libraries
  13. # VTK_KITS - List of VTK kits, in CAPS
  14. # (COMMON,IO,) etc.
  15. # VTK_LANGUAGES - List of wrapped languages, in CAPS
  16. # (TCL, PYHTON,) etc.
  17. # The following cache entries must be set by the user to locate VTK:
  18. # VTK_DIR - The directory containing VTKConfig.cmake.
  19. # This is either the root of the build tree,
  20. # or the lib/vtk directory. This is the
  21. # only cache entry.
  22. # The following variables are set for backward compatibility and
  23. # should not be used in new code:
  24. # USE_VTK_FILE - The full path to the UseVTK.cmake file.
  25. # This is provided for backward
  26. # compatibility. Use VTK_USE_FILE
  27. # instead.
  28. #
  29. # Construct consitent error messages for use below.
  30. SET(VTK_DIR_DESCRIPTION "directory containing VTKConfig.cmake. This is either the root of the build tree, or PREFIX/lib/vtk for an installation. For VTK 4.0, this is the location of UseVTK.cmake. This is either the root of the build tree or PREFIX/include/vtk for an installation.")
  31. SET(VTK_DIR_MESSAGE "VTK not found. Set the VTK_DIR cmake cache entry to the ${VTK_DIR_DESCRIPTION}")
  32. # Search only if the location is not already known.
  33. IF(NOT VTK_DIR)
  34. # Get the system search path as a list.
  35. IF(UNIX)
  36. STRING(REGEX MATCHALL "[^:]+" VTK_DIR_SEARCH1 "$ENV{PATH}")
  37. ELSE(UNIX)
  38. STRING(REGEX REPLACE "\\\\" "/" VTK_DIR_SEARCH1 "$ENV{PATH}")
  39. ENDIF(UNIX)
  40. STRING(REGEX REPLACE "/;" ";" VTK_DIR_SEARCH2 "${VTK_DIR_SEARCH1}")
  41. # Construct a set of paths relative to the system search path.
  42. SET(VTK_DIR_SEARCH "")
  43. FOREACH(dir ${VTK_DIR_SEARCH2})
  44. SET(VTK_DIR_SEARCH ${VTK_DIR_SEARCH}
  45. ${dir}/../lib/vtk-5.2
  46. ${dir}/../lib/vtk-5.1
  47. ${dir}/../lib/vtk-5.0
  48. ${dir}/../lib/vtk
  49. )
  50. ENDFOREACH(dir)
  51. # Old scripts may set these directories in the CMakeCache.txt file.
  52. # They can tell us where to find VTKConfig.cmake.
  53. SET(VTK_DIR_SEARCH_LEGACY "")
  54. IF(VTK_BINARY_PATH AND USE_BUILT_VTK)
  55. SET(VTK_DIR_SEARCH_LEGACY ${VTK_DIR_SEARCH_LEGACY} ${VTK_BINARY_PATH})
  56. ENDIF(VTK_BINARY_PATH AND USE_BUILT_VTK)
  57. IF(VTK_INSTALL_PATH AND USE_INSTALLED_VTK)
  58. SET(VTK_DIR_SEARCH_LEGACY ${VTK_DIR_SEARCH_LEGACY}
  59. ${VTK_INSTALL_PATH}/lib/vtk)
  60. ENDIF(VTK_INSTALL_PATH AND USE_INSTALLED_VTK)
  61. #
  62. # Look for an installation or build tree.
  63. #
  64. FIND_PATH(VTK_DIR UseVTK.cmake
  65. # Support legacy cache files.
  66. ${VTK_DIR_SEARCH_LEGACY}
  67. # Look for an environment variable VTK_DIR.
  68. $ENV{VTK_DIR}
  69. # Look in places relative to the system executable search path.
  70. ${VTK_DIR_SEARCH}
  71. # Look in standard UNIX install locations.
  72. /usr/local/lib/vtk
  73. /usr/lib/vtk
  74. # Read from the CMakeSetup registry entries. It is likely that
  75. # VTK will have been recently built.
  76. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild1]
  77. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild2]
  78. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild3]
  79. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild4]
  80. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild5]
  81. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild6]
  82. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild7]
  83. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild8]
  84. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild9]
  85. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild10]
  86. # Help the user find it if we cannot.
  87. DOC "The ${VTK_DIR_DESCRIPTION}"
  88. )
  89. ENDIF(NOT VTK_DIR)
  90. # If VTK was found, load the configuration file to get the rest of the
  91. # settings.
  92. IF(VTK_DIR)
  93. # Make sure the VTKConfig.cmake file exists in the directory provided.
  94. IF(EXISTS ${VTK_DIR}/VTKConfig.cmake)
  95. # We found VTK. Load the settings.
  96. SET(VTK_FOUND 1)
  97. INCLUDE(${VTK_DIR}/VTKConfig.cmake)
  98. ELSE(EXISTS ${VTK_DIR}/VTKConfig.cmake)
  99. IF(EXISTS ${VTK_DIR}/UseVTK.cmake)
  100. # We found VTK 4.0 (UseVTK.cmake exists, but not VTKConfig.cmake).
  101. SET(VTK_FOUND 1)
  102. # Load settings for VTK 4.0.
  103. INCLUDE(UseVTKConfig40)
  104. ELSE(EXISTS ${VTK_DIR}/UseVTK.cmake)
  105. # We did not find VTK.
  106. SET(VTK_FOUND 0)
  107. ENDIF(EXISTS ${VTK_DIR}/UseVTK.cmake)
  108. ENDIF(EXISTS ${VTK_DIR}/VTKConfig.cmake)
  109. ELSE(VTK_DIR)
  110. # We did not find VTK.
  111. SET(VTK_FOUND 0)
  112. ENDIF(VTK_DIR)
  113. #-----------------------------------------------------------------------------
  114. IF(VTK_FOUND)
  115. # Set USE_VTK_FILE for backward-compatability.
  116. SET(USE_VTK_FILE ${VTK_USE_FILE})
  117. ELSE(VTK_FOUND)
  118. # VTK not found, explain to the user how to specify its location.
  119. IF(NOT VTK_FIND_QUIETLY)
  120. MESSAGE(FATAL_ERROR ${VTK_DIR_MESSAGE})
  121. ELSE(NOT VTK_FIND_QUIETLY)
  122. IF(VTK_FIND_REQUIRED)
  123. MESSAGE(FATAL_ERROR ${VTK_DIR_MESSAGE})
  124. ENDIF(VTK_FIND_REQUIRED)
  125. ENDIF(NOT VTK_FIND_QUIETLY)
  126. ENDIF(VTK_FOUND)