Ver Fonte

BUG: Fixed superfluous and duplicate dirs in Boost_LIBRARY_DIR. Employed workaround for Issue #8378. Resolves Issue #8099

Philip Lowman há 17 anos atrás
pai
commit
5913dc1e88
1 ficheiros alterados com 21 adições e 3 exclusões
  1. 21 3
      Modules/FindBoost.cmake

+ 21 - 3
Modules/FindBoost.cmake

@@ -211,9 +211,27 @@ MACRO (_Boost_ADJUST_LIB_VARS basename)
     ENDIF (Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE)
     
     IF (Boost_${basename}_LIBRARY)
-      SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY} CACHE FILEPATH "The Boost ${basename} library")
-      GET_FILENAME_COMPONENT(Boost_LIBRARY_DIRS "${Boost_${basename}_LIBRARY}" PATH)
-      SET(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIRS} CACHE FILEPATH "Boost library directory")
+      IF(WIN32)
+        # Workaround issue #8378.
+        SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY} CACHE STRING "The Boost ${basename} library")
+      ELSE()
+        SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY} CACHE FILEPATH "The Boost ${basename} library")
+      ENDIF()
+
+      # Remove superfluous "debug" / "optimized" keywords from
+      # Boost_LIBRARY_DIRS
+      FOREACH(_boost_my_lib ${Boost_${basename}_LIBRARY})
+        GET_FILENAME_COMPONENT(_boost_my_lib_path "${_boost_my_lib}" PATH)
+        LIST(APPEND Boost_LIBRARY_DIRS ${_boost_my_lib_path})
+      ENDFOREACH()
+      LIST(REMOVE_DUPLICATES Boost_LIBRARY_DIRS)
+
+      IF(WIN32)
+        # Workaround issue #8378.
+        SET(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIRS} CACHE STRING "Boost library directory")
+      ELSE()
+        SET(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIRS} CACHE FILEPATH "Boost library directory")
+      ENDIF()
       SET(Boost_${basename}_FOUND ON CACHE INTERNAL "Whether the Boost ${basename} library found")
     ENDIF (Boost_${basename}_LIBRARY)