|
|
find_package(PythonLibs 3 REQUIRED)
|
|
|
find_package(PythonInterp 3 REQUIRED)
|
|
|
find_package(PySide2 REQUIRED)
|
|
|
find_package(Shiboken2 REQUIRED)
|
|
|
include(PythonInfo)
|
|
|
find_python_site_packages(PYTHON_SITE_PACKAGES)
|
|
|
|
|
|
set(BINDINGS_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
set(BINDINGS_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
|
|
configure_file("${BINDINGS_SRC_DIR}/bindings.xml" "${BINDINGS_BUILD_DIR}/bindings.xml" COPYONLY)
|
|
|
configure_file("${BINDINGS_SRC_DIR}/main.py" "${BINDINGS_BUILD_DIR}/main.py" COPYONLY)
|
|
|
|
|
|
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "${BINDINGS_SRC_DIR}/src_list.py" cmake "${BINDINGS_BUILD_DIR}" OUTPUT_VARIABLE BINDINGS_SOURCE)
|
|
|
|
|
|
set_property(SOURCE ${BINDINGS_SOURCE} PROPERTY SKIP_AUTOGEN ON)
|
|
|
|
|
|
list(APPEND BINDINGS_INCLUDE_DIRS
|
|
|
${PYTHON_INCLUDE_DIRS}
|
|
|
${Qt5Core_INCLUDE_DIRS}
|
|
|
${Qt5Widgets_INCLUDE_DIRS}
|
|
|
${Qt5Gui_INCLUDE_DIRS}
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../gui/include
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../core/include
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../core/external/TimeSeries/include
|
|
|
)
|
|
|
list(REMOVE_DUPLICATES BINDINGS_INCLUDE_DIRS)
|
|
|
foreach(DIR ${BINDINGS_INCLUDE_DIRS})
|
|
|
list(APPEND BINDINGS_INCLUDE_DIRS_ARGS "-I${DIR}")
|
|
|
endforeach()
|
|
|
|
|
|
set(SHIBOKEN_OPTIONS --generator-set=shiboken
|
|
|
--enable-parent-ctor-heuristic
|
|
|
--enable-return-value-heuristic
|
|
|
--use-isnull-as-nb_nonzero
|
|
|
--avoid-protected-hack
|
|
|
--enable-pyside-extensions
|
|
|
-std=c++17)
|
|
|
add_custom_command(
|
|
|
OUTPUT ${BINDINGS_SOURCE}
|
|
|
COMMAND Shiboken2::shiboken2 ${SHIBOKEN_OPTIONS}
|
|
|
${BINDINGS_INCLUDE_DIRS_ARGS}
|
|
|
--typesystem-paths=${PYSIDE_TYPESYSTEMS}
|
|
|
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/bindings.h ${CMAKE_CURRENT_SOURCE_DIR}/bindings.xml
|
|
|
|
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/bindings.xml"
|
|
|
IMPLICIT_DEPENDS CXX "${CMAKE_CURRENT_SOURCE_DIR}/bindings.h"
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
|
COMMENT "Generating Python bindings with shiboken2")
|
|
|
|
|
|
include_directories(
|
|
|
${PYSIDE_INCLUDE_DIR}/QtCore
|
|
|
${PYSIDE_INCLUDE_DIR}/QtGui
|
|
|
${PYSIDE_INCLUDE_DIR}/QtWidgets)
|
|
|
|
|
|
include_directories(
|
|
|
${PYTHON_SITE_PACKAGES}/numpy/core/include/
|
|
|
${PYTHON_INCLUDE_DIRS}
|
|
|
${SHIBOKEN_INCLUDE_DIR}
|
|
|
${PYSIDE_INCLUDE_DIR}
|
|
|
${PYSIDE_INCLUDE_DIR}/QtCore
|
|
|
${PYSIDE_INCLUDE_DIR}/QtGui
|
|
|
${PYSIDE_INCLUDE_DIR}/QtWidgets)
|
|
|
|
|
|
add_library(SciQLopBindings MODULE ${BINDINGS_SOURCE} numpy_wrappers.h)
|
|
|
set_target_properties(
|
|
|
SciQLopBindings
|
|
|
PROPERTIES
|
|
|
PREFIX ""
|
|
|
OUTPUT_NAME "SciQLopBindings"
|
|
|
)
|
|
|
target_link_libraries(SciQLopBindings sciqlopapp)
|
|
|
target_link_libraries(SciQLopBindings Shiboken2::libshiboken)
|
|
|
target_link_libraries(SciQLopBindings PySide2::pyside2)
|
|
|
|
|
|
add_executable(debug_sciqlop_app main.cpp )
|
|
|
find_package (Python3 COMPONENTS Development)
|
|
|
target_link_libraries(debug_sciqlop_app PRIVATE Python3::Python)
|
|
|
|