mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 05:05:11 +00:00
fix(cmake): findpython issues and 3.12 support for pybind11_find_import (#4941)
* fix(cmake): findpython issues and 3.12 support for pybind11_find_import Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * Update pybind11NewTools.cmake --------- Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
This commit is contained in:
parent
6831666f5c
commit
9591cfb0b8
@ -218,8 +218,15 @@ if(NOT _pybind11_nopython)
|
|||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND
|
COMMAND
|
||||||
${${_Python}_EXECUTABLE} -c
|
${${_Python}_EXECUTABLE} -c "
|
||||||
"from pkg_resources import get_distribution; print(get_distribution('${PYPI_NAME}').version)"
|
try:
|
||||||
|
from importlib.metadata import version
|
||||||
|
except ImportError:
|
||||||
|
from pkg_resources import get_distribution
|
||||||
|
def version(s):
|
||||||
|
return get_distribution(s).version
|
||||||
|
print(version('${PYPI_NAME}'))
|
||||||
|
"
|
||||||
RESULT_VARIABLE RESULT_PRESENT
|
RESULT_VARIABLE RESULT_PRESENT
|
||||||
OUTPUT_VARIABLE PKG_VERSION
|
OUTPUT_VARIABLE PKG_VERSION
|
||||||
ERROR_QUIET)
|
ERROR_QUIET)
|
||||||
|
@ -39,12 +39,23 @@ if(NOT Python_FOUND AND NOT Python3_FOUND)
|
|||||||
set(_pybind11_dev_component Development.Module OPTIONAL_COMPONENTS Development.Embed)
|
set(_pybind11_dev_component Development.Module OPTIONAL_COMPONENTS Development.Embed)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Callers need to be able to access Python_EXECUTABLE
|
||||||
|
set(_pybind11_global_keyword "")
|
||||||
|
if(NOT is_config AND NOT DEFINED Python_ARTIFACTS_INTERACTIVE)
|
||||||
|
set(Python_ARTIFACTS_INTERACTIVE TRUE)
|
||||||
|
if(NOT CMAKE_VERSION VERSION_LESS 3.24)
|
||||||
|
set(_pybind11_global_keyword "GLOBAL")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(Python 3.6 REQUIRED COMPONENTS Interpreter ${_pybind11_dev_component}
|
find_package(Python 3.6 REQUIRED COMPONENTS Interpreter ${_pybind11_dev_component}
|
||||||
${_pybind11_quiet})
|
${_pybind11_quiet} ${_pybind11_global_keyword})
|
||||||
|
|
||||||
# If we are in submodule mode, export the Python targets to global targets.
|
# If we are in submodule mode, export the Python targets to global targets.
|
||||||
# If this behavior is not desired, FindPython _before_ pybind11.
|
# If this behavior is not desired, FindPython _before_ pybind11.
|
||||||
if(NOT is_config)
|
if(NOT is_config
|
||||||
|
AND NOT Python_ARTIFACTS_INTERACTIVE
|
||||||
|
AND _pybind11_global_keyword STREQUAL "")
|
||||||
if(TARGET Python::Python)
|
if(TARGET Python::Python)
|
||||||
set_property(TARGET Python::Python PROPERTY IMPORTED_GLOBAL TRUE)
|
set_property(TARGET Python::Python PROPERTY IMPORTED_GLOBAL TRUE)
|
||||||
endif()
|
endif()
|
||||||
@ -53,6 +64,22 @@ if(NOT Python_FOUND AND NOT Python3_FOUND)
|
|||||||
set_property(TARGET Python::Module PROPERTY IMPORTED_GLOBAL TRUE)
|
set_property(TARGET Python::Module PROPERTY IMPORTED_GLOBAL TRUE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Explicitly export version for callers (including our own functions)
|
||||||
|
if(NOT is_config AND Python_ARTIFACTS_INTERACTIVE)
|
||||||
|
set(Python_VERSION
|
||||||
|
"${Python_VERSION}"
|
||||||
|
CACHE INTERNAL "")
|
||||||
|
set(Python_VERSION_MAJOR
|
||||||
|
"${Python_VERSION_MAJOR}"
|
||||||
|
CACHE INTERNAL "")
|
||||||
|
set(Python_VERSION_MINOR
|
||||||
|
"${Python_VERSION_MINOR}"
|
||||||
|
CACHE INTERNAL "")
|
||||||
|
set(Python_VERSION_PATCH
|
||||||
|
"${Python_VERSION_PATCH}"
|
||||||
|
CACHE INTERNAL "")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(Python_FOUND)
|
if(Python_FOUND)
|
||||||
|
Loading…
Reference in New Issue
Block a user