1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
# Set SWIG policies
cmake_policy(SET CMP0078 NEW)
cmake_policy(SET CMP0086 NEW)
find_package(SWIG 4.0 REQUIRED)
set(UseSWIG_MODULE_VERSION 2)
include(${SWIG_USE_FILE})
# =======
# Library
# =======
# The name of the shared library must match the module name
set_source_files_properties(bindings.i PROPERTIES
CPLUSPLUS ON
SWIG_MODULE_NAME "bindings")
# Create the SWIG library
swig_add_library(swig_bindings
TYPE MODULE
LANGUAGE python
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/mymath
OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR}
SOURCES bindings.i)
target_link_libraries(swig_bindings
PRIVATE MyMath::mymath Python3::NumPy)
set_target_properties(swig_bindings PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mymath)
set_property(TARGET swig_bindings PROPERTY
SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE)
# Enable parsing the doxygen comments
set_property(TARGET swig_bindings
PROPERTY SWIG_COMPILE_OPTIONS -doxygen)
# Add dependency to numpy.i
set_property(
TARGET swig_bindings
PROPERTY SWIG_DEPENDS numpy.i)
# =======
# Install
# =======
# Get the autogenerated Python file
get_property(WRAPPER_PY_FILE
TARGET swig_bindings
PROPERTY SWIG_SUPPORT_FILES)
# Install the autogenerated Python file
install(
FILES ${WRAPPER_PY_FILE}
DESTINATION ${MYMATH_INSTALL_PREFIX}
COMPONENT bindings)
# Install the SWIG library
install(
TARGETS swig_bindings
COMPONENT bindings
LIBRARY DESTINATION ${MYMATH_INSTALL_PREFIX}
ARCHIVE DESTINATION ${MYMATH_INSTALL_PREFIX}
RUNTIME DESTINATION ${MYMATH_INSTALL_PREFIX})
|