Files
RapidPoseTriangulation/bindings/CMakeLists.txt
T

44 lines
1.6 KiB
CMake

find_package(Python 3.10 REQUIRED COMPONENTS Interpreter Development.Module)
if(NOT nanobind_DIR)
execute_process(
COMMAND "${Python_EXECUTABLE}" -c "import nanobind; print(nanobind.cmake_dir())"
OUTPUT_VARIABLE nanobind_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE nanobind_dir_result
)
if(NOT nanobind_dir_result EQUAL 0 OR NOT nanobind_DIR)
message(FATAL_ERROR "Failed to resolve nanobind CMake directory from Python.")
endif()
endif()
find_package(nanobind CONFIG REQUIRED)
set(RPT_PYTHON_PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/rpt")
file(MAKE_DIRECTORY "${RPT_PYTHON_PACKAGE_DIR}")
configure_file("${PROJECT_SOURCE_DIR}/src/rpt/__init__.py" "${RPT_PYTHON_PACKAGE_DIR}/__init__.py" COPYONLY)
configure_file("${PROJECT_SOURCE_DIR}/src/rpt/_helpers.py" "${RPT_PYTHON_PACKAGE_DIR}/_helpers.py" COPYONLY)
configure_file("${PROJECT_SOURCE_DIR}/src/rpt/py.typed" "${RPT_PYTHON_PACKAGE_DIR}/py.typed" COPYONLY)
nanobind_add_module(rpt_core_ext "${CMAKE_CURRENT_SOURCE_DIR}/rpt_module.cpp")
set_target_properties(rpt_core_ext PROPERTIES
OUTPUT_NAME "_core"
LIBRARY_OUTPUT_DIRECTORY "${RPT_PYTHON_PACKAGE_DIR}"
)
target_link_libraries(rpt_core_ext PRIVATE rpt_core)
target_include_directories(rpt_core_ext PRIVATE
"${PROJECT_SOURCE_DIR}/rpt"
)
nanobind_add_stub(rpt_core_stub
MODULE rpt._core
OUTPUT "${RPT_PYTHON_PACKAGE_DIR}/_core.pyi"
PYTHON_PATH "${CMAKE_CURRENT_BINARY_DIR}"
DEPENDS rpt_core_ext
)
install(TARGETS rpt_core_ext LIBRARY DESTINATION rpt)
install(FILES "${RPT_PYTHON_PACKAGE_DIR}/_core.pyi" DESTINATION rpt)