53 lines
1.5 KiB
CMake
53 lines
1.5 KiB
CMake
# 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}
|
|
)
|