diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..a4d00ca --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.14) +project(imu_py LANGUAGES CXX) + +# 使用 C++17 +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# 查找 pybind11(已通过 pip 安装) +execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import pybind11; print(pybind11.get_cmake_dir())" OUTPUT_VARIABLE PYBIND11_CMAKE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) +set(CMAKE_PREFIX_PATH "${PYBIND11_CMAKE_DIR}" ${CMAKE_PREFIX_PATH}) + +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/dm_imu/src +) + +find_package(pybind11 REQUIRED) + +pybind11_add_module(imu_py + dm_imu/pybind_imu.cpp + dm_imu/src/imu_driver.cpp + dm_imu/src/bsp_crc.cpp) diff --git a/dm_imu.egg-info/SOURCES.txt b/dm_imu.egg-info/SOURCES.txt index e9e7cba..28f5492 100644 --- a/dm_imu.egg-info/SOURCES.txt +++ b/dm_imu.egg-info/SOURCES.txt @@ -2,6 +2,7 @@ LICENSE README.md pyproject.toml setup.py +./dm_imu/__init__.py dm_imu/__init__.py dm_imu.egg-info/PKG-INFO dm_imu.egg-info/SOURCES.txt diff --git a/dm_imu.egg-info/top_level.txt b/dm_imu.egg-info/top_level.txt index a467289..09ede54 100644 --- a/dm_imu.egg-info/top_level.txt +++ b/dm_imu.egg-info/top_level.txt @@ -1,2 +1 @@ dm_imu -imu_py diff --git a/dm_imu/__pycache__/__init__.cpython-310.pyc b/dm_imu/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..2d698e9 Binary files /dev/null and b/dm_imu/__pycache__/__init__.cpython-310.pyc differ diff --git a/dm_imu/imu_py.cpython-310-aarch64-linux-gnu.so b/dm_imu/imu_py.cpython-310-aarch64-linux-gnu.so new file mode 100755 index 0000000..cb3d22f Binary files /dev/null and b/dm_imu/imu_py.cpython-310-aarch64-linux-gnu.so differ diff --git a/imu_py.cpython-310-aarch64-linux-gnu.so b/imu_py.cpython-310-aarch64-linux-gnu.so new file mode 100755 index 0000000..cb3d22f Binary files /dev/null and b/imu_py.cpython-310-aarch64-linux-gnu.so differ diff --git a/setup.py b/setup.py index dd8d63b..c12d8ad 100644 --- a/setup.py +++ b/setup.py @@ -41,15 +41,17 @@ class CMakeBuild(build_ext): ] # 1) configure + old_cwd = os.getcwd() os.chdir(str(build_temp)) self.spawn(["cmake", str(ext.sourcedir)] + cmake_args) # 2) build self.spawn( ["cmake", "--build", ".", "--config", cfg, "--", f"-j{os.cpu_count() or 1}"], ) + os.chdir(old_cwd) # Path to the pybind11 C++ source directory. -pybind_src = pathlib.Path(__file__).parent / "dm_imu" +pybind_src = pathlib.Path(__file__).parent setup( name="dm_imu", @@ -58,8 +60,9 @@ setup( description="DM IMU driver with pybind11", long_description=open("README.md", encoding="utf-8").read(), long_description_content_type="text/markdown", - packages=["dm_imu"], - ext_modules=[CMakeExtension("imu_py", sourcedir=str(pybind_src))], + packages=find_packages(where="."), + package_dir={"": "."}, + ext_modules=[CMakeExtension("dm_imu.imu_py", sourcedir=str(pybind_src))], cmdclass={"build_ext": CMakeBuild}, zip_safe=False, python_requires=">=3.8",