Specify PySide version in bindings template

This commit is contained in:
Anton Kochkov 2023-02-16 12:43:03 +08:00 committed by Anton Kochkov
parent 93f88263a0
commit aa40f69458
5 changed files with 18 additions and 12 deletions

View File

@ -110,9 +110,13 @@ if(CUTTER_ENABLE_PYTHON)
find_package(Shiboken6 "${Shiboken6_VERSION_REQUIRED}" REQUIRED) find_package(Shiboken6 "${Shiboken6_VERSION_REQUIRED}" REQUIRED)
find_package(Shiboken6Tools "${Shiboken6_VERSION_REQUIRED}" REQUIRED) find_package(Shiboken6Tools "${Shiboken6_VERSION_REQUIRED}" REQUIRED)
find_package(PySide6 "${Shiboken6_VERSION_REQUIRED}" REQUIRED) find_package(PySide6 "${Shiboken6_VERSION_REQUIRED}" REQUIRED)
get_target_property(LIBSHIBOKEN_INCLUDE_DIRS Shiboken6::libshiboken INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(PYSIDE_INCLUDE_DIR PySide6::pyside6 INTERFACE_INCLUDE_DIRECTORIES) get_target_property(PYSIDE_INCLUDE_DIR PySide6::pyside6 INTERFACE_INCLUDE_DIRECTORIES)
# Check the presence of "pysidecleanup.h" # Check the presence of "pysidecleanup.h"
include(CheckIncludeFileCXX)
set(CMAKE_REQUIRED_INCLUDES "${PYSIDE_INCLUDE_DIR};${LIBSHIBOKEN_INCLUDE_DIRS}")
CHECK_INCLUDE_FILE_CXX("pysidecleanup.h" HAVE_PYSIDECLEANUP) CHECK_INCLUDE_FILE_CXX("pysidecleanup.h" HAVE_PYSIDECLEANUP)
add_compile_definitions("HAVE_PYSIDECLEANUP=${HAVE_PYSIDECLEANUP}")
else() else()
# 5.12.3 => 5.12 # 5.12.3 => 5.12
if("${Qt5_VERSION}" MATCHES "^([0-9]+\\.[0-9]+)\\.[0-9]+") if("${Qt5_VERSION}" MATCHES "^([0-9]+\\.[0-9]+)\\.[0-9]+")

View File

@ -394,10 +394,18 @@ if (CUTTER_ENABLE_PYTHON)
endif() endif()
if(CUTTER_ENABLE_PYTHON_BINDINGS) if(CUTTER_ENABLE_PYTHON_BINDINGS)
if (CUTTER_QT6)
set(PYSIDE_NAME PySide6)
set(SHIBOKEN_COMMAND Shiboken6::shiboken6)
else()
set(PYSIDE_NAME PySide2)
set(SHIBOKEN_COMMAND Shiboken2::shiboken2)
endif()
set(BINDINGS_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bindings") set(BINDINGS_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bindings")
set(BINDINGS_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/bindings") set(BINDINGS_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/bindings")
configure_file("${BINDINGS_SRC_DIR}/bindings.xml" "${BINDINGS_BUILD_DIR}/bindings.xml" COPYONLY) # trigger reconfigure if file changes configure_file("${BINDINGS_SRC_DIR}/bindings.xml.in" "${BINDINGS_BUILD_DIR}/bindings.xml")
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "${BINDINGS_SRC_DIR}/src_list.py" cmake "${BINDINGS_BUILD_DIR}" OUTPUT_VARIABLE BINDINGS_SOURCE) execute_process(COMMAND "${PYTHON_EXECUTABLE}" "${BINDINGS_SRC_DIR}/src_list.py" cmake "${BINDINGS_BUILD_DIR}" OUTPUT_VARIABLE BINDINGS_SOURCE)
@ -436,15 +444,9 @@ if(CUTTER_ENABLE_PYTHON_BINDINGS)
list(APPEND SHIBOKEN_OPTIONS --avoid-protected-hack) list(APPEND SHIBOKEN_OPTIONS --avoid-protected-hack)
endif() endif()
if (CUTTER_QT6)
set(SHIBOKEN_COMMAND Shiboken6::shiboken6)
else()
set(SHIBOKEN_COMMAND Shiboken2::shiboken2)
endif()
add_custom_command(OUTPUT ${BINDINGS_SOURCE} add_custom_command(OUTPUT ${BINDINGS_SOURCE}
COMMAND "${SHIBOKEN_COMMAND}" --project-file="${BINDINGS_BUILD_DIR}/bindings.txt" ${SHIBOKEN_OPTIONS} ${SHIBOKEN_EXTRA_OPTIONS} COMMAND "${SHIBOKEN_COMMAND}" --project-file="${BINDINGS_BUILD_DIR}/bindings.txt" ${SHIBOKEN_OPTIONS} ${SHIBOKEN_EXTRA_OPTIONS}
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/bindings/bindings.xml" "${BINDINGS_BUILD_DIR}/bindings.txt" DEPENDS "${BINDINGS_BUILD_DIR}/bindings.xml" "${BINDINGS_BUILD_DIR}/bindings.txt"
IMPLICIT_DEPENDS CXX "${CMAKE_CURRENT_SOURCE_DIR}/bindings/bindings.h" IMPLICIT_DEPENDS CXX "${CMAKE_CURRENT_SOURCE_DIR}/bindings/bindings.h"
COMMENT "Generating Python bindings with shiboken2") COMMENT "Generating Python bindings with shiboken2")
else() else()

View File

@ -3,7 +3,7 @@
generator-set = shiboken generator-set = shiboken
header-file = ${BINDINGS_SRC_DIR}/bindings.h header-file = ${BINDINGS_SRC_DIR}/bindings.h
typesystem-file = ${BINDINGS_SRC_DIR}/bindings.xml typesystem-file = ${BINDINGS_BUILD_DIR}/bindings.xml
output-directory = ${BINDINGS_BUILD_DIR} output-directory = ${BINDINGS_BUILD_DIR}
@ -14,4 +14,4 @@ typesystem-paths = ${PYSIDE_TYPESYSTEMS}
enable-parent-ctor-heuristic enable-parent-ctor-heuristic
enable-pyside-extensions enable-pyside-extensions
enable-return-value-heuristic enable-return-value-heuristic
use-isnull-as-nb_nonzero use-isnull-as-nb_nonzero

View File

@ -30,7 +30,7 @@
PyErr_Print(); PyErr_Print();
return QString(); return QString();
} }
PythonToCppFunc pythonToCpp = Shiboken::Conversions::isPythonToCppConvertible(SbkPySide2_QtCoreTypeConverters[SBK_QSTRING_IDX], pyResult); PythonToCppFunc pythonToCpp = Shiboken::Conversions::isPythonToCppConvertible(Sbk${PYSIDE_NAME}_QtCoreTypeConverters[SBK_QSTRING_IDX], pyResult);
if (!pythonToCpp) { if (!pythonToCpp) {
Shiboken::warning(PyExc_RuntimeWarning, 2, "Invalid return value for plugin metadata VAR_NAME, expected %s, got %s.", "QString", Py_TYPE(pyResult)->tp_name); Shiboken::warning(PyExc_RuntimeWarning, 2, "Invalid return value for plugin metadata VAR_NAME, expected %s, got %s.", "QString", Py_TYPE(pyResult)->tp_name);
return ::QString(); return ::QString();

View File

@ -9,7 +9,7 @@ script_path = os.path.dirname(os.path.realpath(__file__))
def get_cpp_files_gen(args, include_package=True): def get_cpp_files_gen(args, include_package=True):
ts_tree = et.parse(os.path.join(script_path, "bindings.xml")) ts_tree = et.parse(os.path.join(script_path, "bindings.xml.in"))
ts_root = ts_tree.getroot() ts_root = ts_tree.getroot()
package = ts_root.attrib["package"] package = ts_root.attrib["package"]