Browse Source

FindPythonLibs: Tolerate call with PYTHON_LIBRARY already a list

`PYTHON_LIBRARY` may contain a list because of `SelectLibraryConfigurations`.
If it is the case, the list can be:

    optimized;<FILEPATH_TO_RELEASE_LIBRARY>;debug;<FILEPATH_TO_DEBUG_LIBRARY>

Instead of directly using the value of `PYTHON_LIBRARY` in the CMake
function `get_filename_component()`, we loop over the content of the
relevant parts of `PYTHON_LIBRARY` and `PYTHON_DEBUG_LIBRARY` whether
they are lists or not.

Suggested-by: Brad King <[email protected]>
Francois Budin 9 years ago
parent
commit
a12d8a03af
1 changed files with 13 additions and 6 deletions
  1. 13 6
      Modules/FindPythonLibs.cmake

+ 13 - 6
Modules/FindPythonLibs.cmake

@@ -168,12 +168,19 @@ foreach(_CURRENT_VERSION ${_Python_VERSIONS})
 
     # Use the library's install prefix as a hint
     set(_Python_INCLUDE_PATH_HINT)
-    get_filename_component(_Python_PREFIX ${PYTHON_LIBRARY} PATH)
-    get_filename_component(_Python_PREFIX ${_Python_PREFIX} PATH)
-    if(_Python_PREFIX)
-      set(_Python_INCLUDE_PATH_HINT ${_Python_PREFIX}/include)
-    endif()
-    unset(_Python_PREFIX)
+    # PYTHON_LIBRARY may contain a list because of SelectLibraryConfigurations
+    # which may have been run previously. If it is the case, the list can be:
+    #   optimized;<FILEPATH_TO_RELEASE_LIBRARY>;debug;<FILEPATH_TO_DEBUG_LIBRARY>
+    foreach(lib ${PYTHON_LIBRARY} ${PYTHON_DEBUG_LIBRARY})
+      if(IS_ABSOLUTE "${lib}")
+        get_filename_component(_Python_PREFIX "${lib}" PATH)
+        get_filename_component(_Python_PREFIX "${_Python_PREFIX}" PATH)
+        if(_Python_PREFIX)
+          list(APPEND _Python_INCLUDE_PATH_HINT ${_Python_PREFIX}/include)
+        endif()
+        unset(_Python_PREFIX)
+      endif()
+    endforeach()
 
     # Add framework directories to the search paths
     set(PYTHON_FRAMEWORK_INCLUDES)