Browse Source

More user friendly (built tree is automatically used).

Sebastien Barre 24 years ago
parent
commit
449564a8e5
1 changed files with 48 additions and 66 deletions
  1. 48 66
      Modules/FindVTK.cmake

+ 48 - 66
Modules/FindVTK.cmake

@@ -3,15 +3,17 @@
 #
 # This module defines:
 #
-# VTK_INSTALL_PATH  - where is the installed version of VTK.
-# USE_BUILT_VTK     - should a built-from-source version of VTK be used
+# VTK_INSTALL_PATH  - Where is the installed version of VTK.
+# USE_BUILT_VTK     - Should a built-from-source version of VTK be used.
 #
-# VTK_BINARY_PATH   - where is (one of) the binary tree(s).
-# USE_INSTALLED_VTK - should an installed version of VTK be used
+# VTK_BINARY_PATH   - Where is (one of) the binary tree(s).
+# USE_INSTALLED_VTK - Should an installed version of VTK be used
 #
-# USE_VTK_FILE      - the full path and location of the UseVTK.cmake file
-#                     ONLY SET if ONE of the USE_BUILT_VTK or 
-#                     USE_INSTALLED_VTK is set to ON.
+# USE_VTK_FILE      - (internal)
+#                     Full path and location to the UseVTK.cmake file.
+#                     This value changes each time USE_BUILT_VTK or 
+#                     USE_INSTALLED_VTK is modified, and only if ONE of
+#                     these setting is set to ON.
 #
 
 #
@@ -36,6 +38,15 @@ FIND_PATH(VTK_BINARY_PATH UseVTK.cmake
   $ENV{HOME}/vtkbin
 )
 
+#
+# If we found a built tree, USE_BUILT_VTK allows the user to 
+# use it or not. Defaults to ON.
+#
+IF (VTK_BINARY_PATH)
+  SET (USE_BUILT_VTK 1 CACHE BOOL 
+       "Use a built (versus installed) version of VTK. Be sure that VTK_BINARY_PATH is correct.")
+ENDIF (VTK_BINARY_PATH)
+
 #
 # Look for an installed tree
 #
@@ -49,92 +60,63 @@ FIND_PATH(VTK_INSTALL_PATH include/vtk/UseVTK.cmake
   [HKEY_LOCAL_MACHINE\\SOFTWARE\\Kitware\\VTK\\40]
 )
 
-#
-# If we found a built tree, USE_BUILT_VTK allows the user to 
-# use it or not.
-#
-# Important: it *has* to be set to OFF first in order to allow
-# the user to change the VTK_BINARY_PATH value *before* the USE_VTK_FILE
-# is set (and the cache created). 
-#
-# For example, CMake could have picked-up the wrong VTK binary path, and if 
-# the related VTK cache was immediately loaded there would not be any way
-# to overwrite these cache values (even by changing the binary path or
-# USE_VTK_FILE).
-#
-IF (VTK_BINARY_PATH)
-  SET (USE_BUILT_VTK 0 CACHE BOOL 
-       "Use a built (versus installed) version of VTK. Be sure VTK_BINARY_PATH is correct before setting it to ON.")
-ENDIF (VTK_BINARY_PATH)
-
 #
 # If we found an installed tree, USE_INSTALLED_VTK allows the user to 
 # use it or not.
 #
-# Important: it *has* to be set to OFF first in order to allow
-# the user to change the VTK_INSTALL_PATH value before the USE_VTK_FILE
-# is set (and the cache created).
-#
-# For example, you might have simultaneously installed different major
-# versions like VTK 3.2, 4.0, 5.1, etc.
-#
-# Moreover, USE_INSTALLED_VTK has to be OFF since USE_BUILT_VTK has to be OFF
-# too (see above). If USE_INSTALLED_VTK was ON by default, then USE_VTK_FILE
-# would be set immediately (since one of them is ON) in favor of the 
-# installed tree.
+# Defaults to OFF if a built tree was found before (see above), ON otherwise.
 #
 IF (VTK_INSTALL_PATH)
-  SET (USE_INSTALLED_VTK 0 CACHE BOOL 
-       "Use an installed (versus built from source) version of VTK. Be sure VTK_INSTALL_PATH is correct before setting it to ON.")
+  IF (USE_BUILT_VTK)
+    SET (USE_INSTALLED_VTK 0 CACHE BOOL 
+         "Use an installed (versus built from source) version of VTK. Be sure that VTK_INSTALL_PATH is correct.")
+  ELSE (USE_BUILT_VTK)
+    SET (USE_INSTALLED_VTK 1 CACHE BOOL 
+         "Use an installed (versus built from source) version of VTK. Be sure that VTK_INSTALL_PATH is correct.")
+  ENDIF (USE_BUILT_VTK)
 ENDIF (VTK_INSTALL_PATH)
 
 #
 # Set the USE_VTK_FILE only if one of USE_BUILT_VTK or USE_INSTALLED_VTK
-# is ON, i.e. if the user has decided if he wants to use either the built
-# or the installed VTK. Even if only one of the VTK flavor was found,
-# this also enable the user to change the path to his VTK (in case the
-# wrong installed or built VTK was automatically found).
-#
-# Once this decision has been made, there is no way to go back except by
-# erasing the cache. Mark these useless vars as ADVANCED to reflect this.
+# is ON.
 #
 IF (USE_BUILT_VTK)
   IF (NOT USE_INSTALLED_VTK)
-    FIND_FILE(USE_VTK_FILE UseVTK.cmake ${VTK_BINARY_PATH})
-    MARK_AS_ADVANCED(
-      USE_BUILT_VTK
-      USE_INSTALLED_VTK
-      USE_VTK_FILE 
-      VTK_INSTALL_PATH
-    )
+    IF (EXISTS "${VTK_BINARY_PATH}/UseVTK.cmake")
+      SET (USE_VTK_FILE "${VTK_BINARY_PATH}/UseVTK.cmake")
+    ENDIF (EXISTS "${VTK_BINARY_PATH}/UseVTK.cmake")
   ENDIF (NOT USE_INSTALLED_VTK)
 ELSE (USE_BUILT_VTK)
   IF (USE_INSTALLED_VTK)
-    SET (USE_VTK_FILE ${VTK_INSTALL_PATH}/include/vtk/UseVTK.cmake)
-    MARK_AS_ADVANCED(
-      USE_BUILT_VTK
-      USE_INSTALLED_VTK
-      USE_VTK_FILE 
-      VTK_BINARY_PATH
-    )
+    IF (EXISTS "${VTK_INSTALL_PATH}/include/vtk/UseVTK.cmake")
+      SET (USE_VTK_FILE "${VTK_INSTALL_PATH}/include/vtk/UseVTK.cmake")
+    ENDIF (EXISTS "${VTK_INSTALL_PATH}/include/vtk/UseVTK.cmake")
   ENDIF (USE_INSTALLED_VTK)
 ENDIF (USE_BUILT_VTK)
 
+#
+# Display a warning if both settings are set to ON.
+# Otherwise display a warning if VTK was not found.
+#
+IF (USE_BUILT_VTK AND USE_INSTALLED_VTK)
+  MESSAGE ("Warning. Please make sure that only ONE of the USE_INSTALLED_VTK or USE_BUILT_VTK setting is set to ON.")
+ELSE (USE_BUILT_VTK AND USE_INSTALLED_VTK)
+  IF (NOT USE_VTK_FILE)
+    MESSAGE ("Warning. VTK might be found on your system as different flavours: installed VTK or built VTK. Please make sure that the VTK_INSTALL_PATH or VTK_BINARY_PATH setting reflects which VTK you are planning to use, then set ONE of the USE_INSTALLED_VTK or USE_BUILT_VTK setting to ON.")
+  ENDIF (NOT USE_VTK_FILE)
+ENDIF (USE_BUILT_VTK AND USE_INSTALLED_VTK)
+
 # Note:
 #
 # If you use that module then you are probably relying on VTK to be found
-# on your system. As said before, it might be found as different flavours: 
-# installed VTK, or (multiple) built VTK. Moreover, even if it is found
-# automatically, CMake might have picked the wrong path/version.
-#
-# Here is the CMake code you might probably want to use to work hand-in-hand
-# with that module:
+# on your system. Here is the CMake code you might probably want to use to
+# work hand-in-hand with that module (in that example CAN_BUILD is a var
+# that is set to 0 if your project can not be build):
 #
 # INCLUDE (${CMAKE_ROOT}/Modules/FindVTK.cmake)
 #
 # IF (USE_VTK_FILE)
 #   INCLUDE (${USE_VTK_FILE})
 # ELSE (USE_VTK_FILE)
-#   MESSAGE("Warning. This project is supposed to work with VTK, which might be found on your system as different flavours: installed VTK, or (multiple) built VTK. Please, make sure that the VTK_INSTALL_PATH or VTK_BINARY_PATH setting reflect which VTK you are planning to use, then set one of the USE_INSTALLED_VTK or USE_BUILT_VTK to ON.")
 #   SET (CAN_BUILD 0)
 # ENDIF (USE_VTK_FILE)