FindPythonLibs: Match include dir to library version
This commit ensures that FindPythonLibs has found the library before before the search for the include dir begins. The library prefix and version can then be used to find the matching include dir.
This commit is contained in:
parent
ea2db3bb02
commit
a9d32dffb9
|
@ -150,26 +150,41 @@ foreach(_CURRENT_VERSION ${_Python_VERSIONS})
|
||||||
PATH_SUFFIXES python${_CURRENT_VERSION}/config
|
PATH_SUFFIXES python${_CURRENT_VERSION}/config
|
||||||
)
|
)
|
||||||
|
|
||||||
set(PYTHON_FRAMEWORK_INCLUDES)
|
# Don't search for include dir until library location is known
|
||||||
if(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR)
|
if(PYTHON_LIBRARY)
|
||||||
foreach(dir ${Python_FRAMEWORKS})
|
|
||||||
list(APPEND PYTHON_FRAMEWORK_INCLUDES
|
|
||||||
${dir}/Versions/${_CURRENT_VERSION}/include)
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_path(PYTHON_INCLUDE_DIR
|
# Use the library's install prefix as a hint
|
||||||
NAMES Python.h
|
set(_Python_INCLUDE_PATH_HINT)
|
||||||
PATHS
|
get_filename_component(_PREFIX ${PYTHON_LIBRARY} PATH)
|
||||||
${PYTHON_FRAMEWORK_INCLUDES}
|
get_filename_component(_PREFIX ${_PREFIX} PATH)
|
||||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
|
if(_PREFIX)
|
||||||
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
|
set(_Python_INCLUDE_PATH_HINT ${_PREFIX}/include)
|
||||||
PATH_SUFFIXES
|
endif()
|
||||||
python${_CURRENT_VERSION}mu
|
|
||||||
python${_CURRENT_VERSION}m
|
# Add framework directories to the search paths
|
||||||
python${_CURRENT_VERSION}u
|
set(PYTHON_FRAMEWORK_INCLUDES)
|
||||||
python${_CURRENT_VERSION}
|
if(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR)
|
||||||
)
|
foreach(dir ${Python_FRAMEWORKS})
|
||||||
|
list(APPEND PYTHON_FRAMEWORK_INCLUDES
|
||||||
|
${dir}/Versions/${_CURRENT_VERSION}/include)
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(PYTHON_INCLUDE_DIR
|
||||||
|
NAMES Python.h
|
||||||
|
HINTS
|
||||||
|
${_Python_INCLUDE_PATH_HINT}
|
||||||
|
PATHS
|
||||||
|
${PYTHON_FRAMEWORK_INCLUDES}
|
||||||
|
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
|
||||||
|
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
|
||||||
|
PATH_SUFFIXES
|
||||||
|
python${_CURRENT_VERSION}mu
|
||||||
|
python${_CURRENT_VERSION}m
|
||||||
|
python${_CURRENT_VERSION}u
|
||||||
|
python${_CURRENT_VERSION}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# For backward compatibility, set PYTHON_INCLUDE_PATH.
|
# For backward compatibility, set PYTHON_INCLUDE_PATH.
|
||||||
set(PYTHON_INCLUDE_PATH "${PYTHON_INCLUDE_DIR}")
|
set(PYTHON_INCLUDE_PATH "${PYTHON_INCLUDE_DIR}")
|
||||||
|
@ -187,6 +202,8 @@ foreach(_CURRENT_VERSION ${_Python_VERSIONS})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
unset(_Python_INCLUDE_PATH_HINT)
|
||||||
|
|
||||||
mark_as_advanced(
|
mark_as_advanced(
|
||||||
PYTHON_DEBUG_LIBRARY
|
PYTHON_DEBUG_LIBRARY
|
||||||
PYTHON_LIBRARY
|
PYTHON_LIBRARY
|
||||||
|
|
Loading…
Reference in New Issue