45 lines
1.1 KiB
CMake
45 lines
1.1 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
project(uf2touft3_binding VERSION 1.0.0 LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# 查找 Python
|
|
find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
|
|
|
|
# 尝试查找 pybind11
|
|
# 方法 1: 通过 pip 安装的 pybind11
|
|
execute_process(
|
|
COMMAND ${Python3_EXECUTABLE} -m pybind11 --cmakedir
|
|
OUTPUT_VARIABLE PYBIND11_CMAKE_DIR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
|
|
if(PYBIND11_CMAKE_DIR)
|
|
list(APPEND CMAKE_PREFIX_PATH ${PYBIND11_CMAKE_DIR})
|
|
endif()
|
|
|
|
find_package(pybind11 REQUIRED)
|
|
|
|
# 创建 Python 模块
|
|
pybind11_add_module(uf2touft3_binding uf2touft3_binding.cpp)
|
|
|
|
# Windows 特定设置
|
|
if(WIN32)
|
|
set_target_properties(uf2touft3_binding PROPERTIES
|
|
SUFFIX ".pyd"
|
|
)
|
|
endif()
|
|
|
|
# 安装目标
|
|
install(TARGETS uf2touft3_binding
|
|
LIBRARY DESTINATION .
|
|
RUNTIME DESTINATION .
|
|
)
|
|
|
|
message(STATUS "Python3 executable: ${Python3_EXECUTABLE}")
|
|
message(STATUS "Python3 include dirs: ${Python3_INCLUDE_DIRS}")
|
|
message(STATUS "Python3 libraries: ${Python3_LIBRARIES}")
|
|
message(STATUS "pybind11 found: ${pybind11_FOUND}")
|