FindVTK.cmake 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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} "${dir}/../lib/vtk")
  45. ENDFOREACH(dir)
  46. # Old scripts may set these directories in the CMakeCache.txt file.
  47. # They can tell us where to find VTKConfig.cmake.
  48. SET(VTK_DIR_SEARCH_LEGACY "")
  49. IF(VTK_BINARY_PATH AND USE_BUILT_VTK)
  50. SET(VTK_DIR_SEARCH_LEGACY ${VTK_DIR_SEARCH_LEGACY} ${VTK_BINARY_PATH})
  51. ENDIF(VTK_BINARY_PATH AND USE_BUILT_VTK)
  52. IF(VTK_INSTALL_PATH AND USE_INSTALLED_VTK)
  53. SET(VTK_DIR_SEARCH_LEGACY ${VTK_DIR_SEARCH_LEGACY}
  54. ${VTK_INSTALL_PATH}/lib/vtk)
  55. ENDIF(VTK_INSTALL_PATH AND USE_INSTALLED_VTK)
  56. #
  57. # Look for an installation or build tree.
  58. #
  59. FIND_PATH(VTK_DIR UseVTK.cmake
  60. # Support legacy cache files.
  61. ${VTK_DIR_SEARCH_LEGACY}
  62. # Look for an environment variable VTK_DIR.
  63. $ENV{VTK_DIR}
  64. # Look in places relative to the system executable search path.
  65. ${VTK_DIR_SEARCH}
  66. # Look in standard UNIX install locations.
  67. /usr/local/lib/vtk
  68. /usr/lib/vtk
  69. # Read from the CMakeSetup registry entries. It is likely that
  70. # VTK will have been recently built.
  71. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild1]
  72. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild2]
  73. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild3]
  74. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild4]
  75. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild5]
  76. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild6]
  77. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild7]
  78. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild8]
  79. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild9]
  80. [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild10]
  81. # Help the user find it if we cannot.
  82. DOC "The ${VTK_DIR_DESCRIPTION}"
  83. )
  84. ENDIF(NOT VTK_DIR)
  85. # If VTK was found, load the configuration file to get the rest of the
  86. # settings.
  87. IF(VTK_DIR)
  88. # Make sure the VTKConfig.cmake file exists in the directory provided.
  89. IF(EXISTS ${VTK_DIR}/VTKConfig.cmake)
  90. # We found VTK. Load the settings.
  91. SET(VTK_FOUND 1)
  92. INCLUDE(${VTK_DIR}/VTKConfig.cmake)
  93. ELSE(EXISTS ${VTK_DIR}/VTKConfig.cmake)
  94. IF(EXISTS ${VTK_DIR}/UseVTK.cmake)
  95. # We found VTK 4.0 (UseVTK.cmake exists, but not VTKConfig.cmake).
  96. SET(VTK_FOUND 1)
  97. # Load settings for VTK 4.0.
  98. INCLUDE(UseVTKConfig40)
  99. ELSE(EXISTS ${VTK_DIR}/UseVTK.cmake)
  100. # We did not find VTK.
  101. SET(VTK_FOUND 0)
  102. ENDIF(EXISTS ${VTK_DIR}/UseVTK.cmake)
  103. ENDIF(EXISTS ${VTK_DIR}/VTKConfig.cmake)
  104. ELSE(VTK_DIR)
  105. # We did not find VTK.
  106. SET(VTK_FOUND 0)
  107. ENDIF(VTK_DIR)
  108. #-----------------------------------------------------------------------------
  109. IF(VTK_FOUND)
  110. # Set USE_VTK_FILE for backward-compatability.
  111. SET(USE_VTK_FILE ${VTK_USE_FILE})
  112. ELSE(VTK_FOUND)
  113. # VTK not found, explain to the user how to specify its location.
  114. IF(NOT VTK_FIND_QUIETLY)
  115. MESSAGE(FATAL_ERROR ${VTK_DIR_MESSAGE})
  116. ELSE(NOT VTK_FIND_QUIETLY)
  117. IF(VTK_FIND_REQUIRED)
  118. MESSAGE(FATAL_ERROR ${VTK_DIR_MESSAGE})
  119. ENDIF(VTK_FIND_REQUIRED)
  120. ENDIF(NOT VTK_FIND_QUIETLY)
  121. ENDIF(VTK_FOUND)