Add CMake support and SWIG bindings for RapidPoseTriangulation

This commit is contained in:
2026-01-29 17:37:38 +08:00
parent 1ab099098e
commit 7405454480
6 changed files with 74 additions and 18 deletions

52
swig/CMakeLists.txt Normal file
View File

@ -0,0 +1,52 @@
# SWIG Python bindings for RapidPoseTriangulation
# Find required packages
find_package(SWIG REQUIRED COMPONENTS python)
find_package(Python3 REQUIRED COMPONENTS Development)
# Include SWIG macros
include(UseSWIG)
# Compiler flags (matching original Makefile)
set(RPT_COMPILE_FLAGS -fPIC -O3 -march=native -Wall -flto=auto)
# Create static library from rpt sources
set(RPT_SOURCES
${CMAKE_SOURCE_DIR}/rpt/camera.cpp
${CMAKE_SOURCE_DIR}/rpt/interface.cpp
${CMAKE_SOURCE_DIR}/rpt/triangulator.cpp
)
add_library(rpt_core STATIC ${RPT_SOURCES})
target_include_directories(rpt_core PUBLIC ${CMAKE_SOURCE_DIR}/rpt)
target_compile_options(rpt_core PRIVATE ${RPT_COMPILE_FLAGS})
# SWIG interface
set_property(SOURCE rpt.i PROPERTY CPLUSPLUS ON)
set_property(SOURCE rpt.i PROPERTY SWIG_MODULE_NAME rpt)
# Set output directory for generated files to match original Makefile behavior
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
swig_add_library(rpt
TYPE MODULE
LANGUAGE python
OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}
OUTFILE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
SOURCES rpt.i
)
# Link the SWIG module
target_link_libraries(rpt PRIVATE rpt_core Python3::Module)
target_compile_options(rpt PRIVATE ${RPT_COMPILE_FLAGS})
# Set the output directory
set_target_properties(rpt PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
# Ensure SWIG can find headers
target_include_directories(rpt PRIVATE
${CMAKE_SOURCE_DIR}/rpt
${Python3_INCLUDE_DIRS}
)