FindPySide2.cmake
84 lines
| 3.5 KiB
| text/x-cmake
|
CMakeLexer
/ cmake / FindPySide2.cmake
r1477 | ||||
set(_module PySide2) | ||||
find_package(${_module} ${${_module}_FIND_VERSION} CONFIG QUIET) | ||||
set(_lib_target ${_module}::pyside2) | ||||
if(NOT ${_module}_FOUND) | ||||
include(PythonInfo) | ||||
find_python_site_packages(PYTHON_SITE_PACKAGES) | ||||
get_python_extension_suffix(PYTHON_EXTENSION_SUFFIX) | ||||
execute_process( | ||||
COMMAND "${PYTHON_EXECUTABLE}" -c "if True: | ||||
from PySide2 import _config | ||||
print(_config.pyside_library_soversion.split('.')[0]) | ||||
" | ||||
OUTPUT_VARIABLE ${_module}_FIND_VERSION_MAJOR | ||||
OUTPUT_STRIP_TRAILING_WHITESPACE) | ||||
execute_process( | ||||
COMMAND "${PYTHON_EXECUTABLE}" -c "if True: | ||||
from PySide2 import _config | ||||
print(_config.pyside_library_soversion.split('.')[1]) | ||||
" | ||||
OUTPUT_VARIABLE ${_module}_FIND_VERSION_MINOR | ||||
OUTPUT_STRIP_TRAILING_WHITESPACE) | ||||
find_library(PYSIDE_LIBRARY | ||||
NAMES | ||||
"pyside2${PYTHON_EXTENSION_SUFFIX}" | ||||
"libpyside2${PYTHON_EXTENSION_SUFFIX}" | ||||
"pyside2${PYTHON_EXTENSION_SUFFIX}.${${_module}_FIND_VERSION_MAJOR}.${${_module}_FIND_VERSION_MINOR}" | ||||
"libpyside2${PYTHON_EXTENSION_SUFFIX}.${${_module}_FIND_VERSION_MAJOR}.${${_module}_FIND_VERSION_MINOR}" | ||||
PATHS "${PYTHON_SITE_PACKAGES}/PySide2") | ||||
find_path(PYSIDE_INCLUDE_DIR | ||||
pyside.h | ||||
PATHS "${PYTHON_SITE_PACKAGES}/PySide2/include") | ||||
find_path(PYSIDE_TYPESYSTEMS | ||||
typesystem_core.xml | ||||
PATHS "${PYTHON_SITE_PACKAGES}/PySide2/typesystems") | ||||
endif() | ||||
if(TARGET ${_lib_target}) | ||||
get_target_property(_is_imported ${_lib_target} IMPORTED) | ||||
if(_is_imported) | ||||
get_target_property(_imported_location ${_lib_target} IMPORTED_LOCATION) | ||||
if(NOT _imported_location) | ||||
message(STATUS "Target ${_lib_target} does not specify its IMPORTED_LOCATION! Trying to find it ourselves...") | ||||
set(_find_args) | ||||
if(${_module}_CONFIG) | ||||
get_filename_component(_pyside2_lib_dir "${${_module}_CONFIG}/../../../" ABSOLUTE) | ||||
set(_find_args PATHS "${_pyside2_lib_dir}") | ||||
endif() | ||||
find_library(PYSIDE_LIBRARY | ||||
NAMES | ||||
"pyside2${PYTHON_CONFIG_SUFFIX}" | ||||
"pyside2${PYTHON_CONFIG_SUFFIX}.${${_module}_FIND_VERSION_MAJOR}.${${_module}_FIND_VERSION_MINOR}" | ||||
${_find_args}) | ||||
if(NOT PYSIDE_LIBRARY) | ||||
set(_message_type WARNING) | ||||
if(${_module}_FIND_REQUIRED) | ||||
set(_message_type FATAL_ERROR) | ||||
endif() | ||||
message(${_message_type} "Failed to manually find library for ${_module}") | ||||
return() | ||||
endif() | ||||
message(STATUS "IMPORTED_LOCATION for ${_lib_target} found: ${PYSIDE_LIBRARY}") | ||||
set_target_properties(${_lib_target} PROPERTIES IMPORTED_LOCATION "${PYSIDE_LIBRARY}") | ||||
endif() | ||||
endif() | ||||
else() | ||||
include(FindPackageHandleStandardArgs) | ||||
find_package_handle_standard_args(${_module} | ||||
FOUND_VAR ${_module}_FOUND | ||||
REQUIRED_VARS PYSIDE_LIBRARY PYSIDE_INCLUDE_DIR PYSIDE_TYPESYSTEMS | ||||
VERSION_VAR ${_module}_VERSION) | ||||
add_library(${_module}::pyside2 INTERFACE IMPORTED) | ||||
set_target_properties(${_module}::pyside2 PROPERTIES | ||||
INTERFACE_INCLUDE_DIRECTORIES "${PYSIDE_INCLUDE_DIR}" | ||||
INTERFACE_LINK_LIBRARIES "${PYSIDE_LIBRARY}") | ||||
endif() | ||||
mark_as_advanced(PYSIDE_INCLUDE_DIR PYSIDE_LIBRARY PYSIDE_BINARY) | ||||