fix: android CMake support (#5733)

This commit is contained in:
Henry Schreiner
2025-06-17 20:04:52 -04:00
committed by GitHub
parent 86e82ddbc2
commit ad9180c120
2 changed files with 13 additions and 1 deletions

View File

@@ -243,6 +243,17 @@ if(TARGET ${_Python}::Python)
endif() endif()
if(TARGET ${_Python}::Module) if(TARGET ${_Python}::Module)
# On Android, older versions of CMake don't know that modules need to link against
# libpython, so Python::Module will be an INTERFACE target with no associated library
# files.
get_target_property(module_target_type ${_Python}::Module TYPE)
if(ANDROID AND module_target_type STREQUAL INTERFACE_LIBRARY)
set_property(
TARGET ${_Python}::Module
APPEND
PROPERTY INTERFACE_LINK_LIBRARIES "${${_Python}_LIBRARIES}")
endif()
set_property( set_property(
TARGET pybind11::module TARGET pybind11::module
APPEND APPEND

View File

@@ -119,7 +119,8 @@ target_link_libraries(
pybind11::module pybind11::module
INTERFACE INTERFACE
pybind11::python_link_helper pybind11::python_link_helper
"$<$<OR:$<PLATFORM_ID:Windows>,$<PLATFORM_ID:Cygwin>>:pybind11::_ClassicPythonLibraries>") "$<$<OR:$<PLATFORM_ID:Windows>,$<PLATFORM_ID:Cygwin>,$<PLATFORM_ID:Android>>:pybind11::_ClassicPythonLibraries>"
)
target_link_libraries(pybind11::embed INTERFACE pybind11::pybind11 target_link_libraries(pybind11::embed INTERFACE pybind11::pybind11
pybind11::_ClassicPythonLibraries) pybind11::_ClassicPythonLibraries)