ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Rerun C++ SDK 中 Arrow C++ 的安装与集成指南:自动下载构建、系统安装与 Pixi 管理

Rerun C++ SDK 中 Arrow C++ 的安装与集成指南:自动下载构建、系统安装与 Pixi 管理 Rerun C SDK 中 Arrow C 的安装与集成指南自动下载构建、系统安装与 Pixi 管理【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun导读Rerun C SDK 依赖 Apache Arrow C 库完成数据序列化如何获取正确版本、选择链接方式直接决定构建成败。本文基于 rerun_cpp/arrow_cpp_install.md 及仓库内 CMake 实现系统讲解三种 libarrow 获取方案默认自动下载构建、系统 find_package、Pixi 环境管理的完整操作步骤、CMake 开关参数与已知坑点。读完你将能独立配置 Rerun C SDK 的 Arrow 依赖并理解其底层构建逻辑。Arrow C 在 Rerun C SDK 中的角色从 rerun_cpp/README.md 的依赖说明可以看出Rerun C SDK 从构建系统角度由三部分组成C SDK 源码同时包含.hpp与.cpp、静态库rerun_c桥接共享 Rust 代码库以及 Apache Arrow C 库——SDK 使用它执行所有序列化工作随后再把数据交给rerun_c。这一结论在源码中可直接印证rerun_cpp/src/下大量文件直接包含 Arrow 头文件例如 tensor_ext.cpp 中的#include arrow/builder.h、arrow_utils.hpp 中的#include arrow/buffer.h等。因此Arrow C 不是可选依赖而是 Rerun C SDK 编译的必要前置。方式一默认CMake 自动下载并构建 Arrow开关与基本用法Rerun C SDK 的 CMakeLists.txt 中定义了一个关键 CMake 选项option(RERUN_DOWNLOAD_AND_BUILD_ARROW If enabled, arrow will be added as an external project and built with the minimal set required by the Rerun C SDK ON)该选项默认值为ON。也就是说当你通过FetchContent引入rerun_cpp_sdk.zip后Rerun 的 CMake 脚本会自动下载一个锁定版本的 Arrow C 并加入构建且构建配置被裁剪到 Rerun C SDK 所需的最小集合。整个流程无需任何额外配置即可工作是官方推荐的最简单接入方式。底层构建细节版本锁定与最小化配置自动构建逻辑全部封装在 rerun_cpp/download_and_build_arrow.cmake 的download_and_build_arrow()函数中核心事实如下版本锁定通过ExternalProject_Add从 GitHub 下载apache-arrow-18.0.0.tar.gz并校验 MD596a4e40287137867c9fe7a2b6c3e5083保证可复现性最小化构建预设根据构建类型选择 Arrow 自带的 CMake preset——Debug对应ninja-debug-minimal其余对应ninja-release-minimal裁剪特性-DARROW_COMPUTEOFF关闭计算模块-DARROW_IPCON保持 IPC源码注释指明这是apache/arrow#44563修复所需内存分配器上-DARROW_JEMALLOCOFF、-DARROW_MIMALLOCON避免 jemalloc 的构建问题-DARROW_BOOST_USE_SHAREDOFF-DBOOST_SOURCEBUNDLED与-Dxsimd_SOURCEBUNDLED使用捆绑三方库-DBUILD_WARNING_LEVELPRODUCTION避免三方告警被提升为错误日志策略LOG_CONFIGURE/LOG_BUILD/LOG_INSTALL均为ON构建过程输出写入日志文件而非刷屏终端避免重复构建UPDATE_COMMAND 防止每次cmake --build都触发不必要的重建源码补丁构建前自动应用两个补丁见下文兼容性补丁小节跨平台产物静态链接时产出libarrow.aApple/UNIX或arrow_static.libWindows动态链接时产出libarrow.dylib/libarrow.so/arrow.dll。此外函数末尾会创建一个名为rerun_arrow_target的导入目标IMPORTED GLOBAL统一封装静态或动态 Arrow并由 CMakeLists.txt 中target_link_libraries(rerun_sdk PRIVATE rerun_arrow_target)接入 SDK。静态链接与动态链接RERUN_ARROW_LINK_SHARED自动构建的同时还可以通过RERUN_ARROW_LINK_SHARED控制链接方式默认OFF即静态链接OFF默认静态ARROW_BUILD_STATICON、ARROW_BUILD_SHAREDOFF。在 Windows 上还会通过ARROW_STATIC编译宏避免 Arrow 函数被dllimport修饰并额外引入arrow_bundled_dependencies静态库以补足 mimalloc 等符号见download_and_build_arrow.cmake中arrow_targetBundledDeps的注释说明ON动态链接速度更快、产物更小但运行时需要能定位到共享库若系统环境中恰好存在其他版本的 Arrow甚至可能意外加载到系统版本而非自己构建的版本这是 cmake_setup_in_detail.md 明确提示的注意点。兼容性补丁两个 patch 文件自动构建会对 Arrow 18 源码应用两个补丁patches/mimalloc_cmake4.patch为 Arrow 内部的 mimalloc 外部工程传递CMAKE_POLICY_VERSION_MINIMUM解决 Arrow 尚不兼容 CMake 4.0 的策略版本问题对应apache/arrow#45985由 CMakeLists.txt 中的相关处理配合使用patches/arrow18_macos_libtool.patchArrow 18 只能识别 Apple 较旧的cctools-versionlibtool 版本字符串补丁将其正则放宽为cctools.([0-9.])使其也能识别新版cctools_ld-version格式避免被误判为 GNU libtool 导致链接失败。源码注释注明该问题已在 Arrow 25 上游修复升级到 Arrow 25 或更高版本后可移除。方式二改用系统已安装的 Arrowfind_package如果你希望跳过下载与构建环节直接复用环境中现成的 Arrow 安装可在 CMake 配置阶段关闭自动构建cmake -B build -S . -DRERUN_DOWNLOAD_AND_BUILD_ARROWOFF此时 CMakeLists.txt 会执行find_package(Arrow REQUIRED)并通过 CMake 查找系统上可用的 Arrow C 安装。随后RERUN_ARROW_LINK_SHAREDON时rerun_arrow_target别名到Arrow::arrow_sharedRERUN_ARROW_LINK_SHAREDOFF时别名到Arrow::arrow_static。Rerun 官方对系统安装没有锁定具体版本只要能被find_package正确发现即可工作。需要留意的是若同时通过 CMake install 安装rerun_sdk动态 Arrow 或系统 Arrow 场景下安装产物不会自带 Arrow 库而是依赖find_package(Arrow)在消费端重新定位系统库详见 cmake_setup_in_detail.md。方式三用 Pixi 管理 libarrowPixi 是一个跨平台的包与环境管理工具Rerun 自身就使用 Pixi 管理内部开发依赖仓库根目录的 pixi.toml 即为佐证其中声明了requires-pixi版本与大量pixi run任务。用它管理 libarrow 的最大优势是直接复用预构建产物不必把 Arrow 的完整构建过程加入自己的工程同时还能顺带管理 Eigen、OpenCV 等其他依赖以及锁定构建工具链版本。⚠️ 使用 Pixi 方案时必须在 CMake 配置时传入-DRERUN_DOWNLOAD_AND_BUILD_ARROWOFF否则 Rerun 的 CMake 脚本会忽略 Pixi 安装的 Arrow仍然自行下载构建。安装 PiximacOS / Linuxcurl -fsSL https://pixi.sh/install.sh | bashWindowsPowerShelliwr -useb https://pixi.sh/install.ps1 | iex如果你已经是cargo用户也可以用 Rust 生态直接安装cargo install pixi为项目添加 Pixi 与 libarrow在项目根目录初始化并添加 Arrow C 依赖pixi init pixi add libarrow18.0.0这里18.0.0与 Rerun 自动构建锁定的 Arrow 18.0.0 保持一致。之后项目中的任何 Pixi 任务都能访问libarrow库即使不定义任务也可以运行pixi shell进入一个包含全部项目依赖含libarrow的 shell 环境在其中执行项目的构建命令。与 rerun-sdk Python 包的版本匹配如果在同一个环境里还安装了rerun-sdkPython 包务必选择兼容的 Arrow 版本。文档给出的检查方式是查询 PyPI 上rerun-sdk包当前捆绑的 pyarrow 版本Linux 与 macOS 上可用curljq完成以此作为pixi add libarrow版本的版本参考避免 C 侧与 Python 侧的 Arrow 版本不一致。实战示例文档引用的 C 示例工程自带pixi.toml安装 Pixi 后克隆并一键运行git clone https://github.com/rerun-io/cpp-example-opencv-eigen cd cpp-example-opencv-eigen pixi run example该示例通过pixi run驱动预定义任务演示了Pixi 管理依赖 Rerun C 构建的完整链路。仓库内 C 示例同样沿用 Pixi 工作流例如 examples/cpp/README.md 提到可用pixi run -e cpp cpp-build-examples在仓库 Pixi 环境中构建全部 C 示例。已知问题Windows 上的 Debug 构建⚠️ 这是 Pixi 方案最重要的坑在 Windows 上Pixi 只会下载发布版release二进制其与 Debug 构建不兼容会导致运行时崩溃。因此 Windows 用户若需要 Debug 构建只能二选一自行从源码构建 Arrow官方构建文档在 Arrow 项目网站或保持默认的RERUN_DOWNLOAD_AND_BUILD_ARROWON让 Rerun 自动构建一份与你构建类型匹配的 Arrow。其他安装 libarrow 的途径除 Pixi 外任何能被find_package发现的现有 Arrow 安装都可与 Rerun C SDK 配合官方预编译包Arrow 为多数平台提供预编译包安装后供 CMake 查找conda-forgeconda-forge 渠道提供libarrow包这也是 Rerun 仓库自身在跨平台场景下偏好的依赖管理模式仓库根 pixi.toml 即使用 conda 生态的包源。选择任意一种安装方式后配合-DRERUN_DOWNLOAD_AND_BUILD_ARROWOFF即可接入构建。与 rerun_sdk 安装集成的行为若你使用 CMake install 预构建rerun_sdk供多个项目复用流程详见 cmake_setup_in_detail.md下载rerun_cpp_sdk.zip→cmake -B build -S . -DCMAKE_BUILD_TYPERelease→cmake --build build --config Release --target rerun_sdk→cmake --install build之后用find_package(rerun_sdk REQUIRED)消费Arrow 的处理遵循以下规则见 CMakeLists.txt 安装段默认场景RERUN_DOWNLOAD_AND_BUILD_ARROWON且静态链接下构建使用的libarrow与arrow_bundled_dependencies会随rerun_sdk一起安装到lib目录消费者开箱即用若RERUN_DOWNLOAD_AND_BUILD_ARROWOFF或RERUN_ARROW_LINK_SHAREDON动态 Arrow安装产物不捆绑 Arrow消费端需依赖系统find_package(Arrow)定位 Arrow 库。相关 CMake 配置项速查以下配置项均定义于 rerun_cpp/CMakeLists.txt默认值开箱即用仅在复杂构建场景下需要调整注意除特别说明外CMake install 后的rerun_sdk不再暴露这些选项配置项默认值作用RERUN_DOWNLOAD_AND_BUILD_ARROWON开启则下载锁定版本的 Arrow C 并加入构建关闭则改用find_package查找预装 ArrowRERUN_ARROW_LINK_SHAREDOFF随ARROW_BUILD_SHARED自适应开启则动态链接 Arrow否则静态链接RERUN_C_LIB自动指向 SDK 发行包中对应平台的rerun_c静态库指定要链接的 Rerun C 静态库路径RERUN_CPP_SOURCE_DIR由CMakeLists.txt自身位置推导Rerun 头文件与源码目录.hpp/.cpp同目录存放小结综合来看获取 Arrow C 的三条路径各有适用场景默认的自动下载构建最省心、版本最可控锁定 18.0.0 且附兼容补丁适合绝大多数FetchContent用户系统安装 find_package适合已有 Arrow 环境或希望加速构建的团队Pixi 管理 libarrow则借助预构建产物与统一依赖管理适合与 Eigen、OpenCV 等库一起托管的项目。无论选择哪条路径牢记两个关键开关——-DRERUN_DOWNLOAD_AND_BUILD_ARROWOFF切换到系统安装、RERUN_ARROW_LINK_SHARED决定静态/动态链接——并规避 Windows Debug 构建与 Pixi 发布版二进制的兼容性陷阱即可顺利集成 Rerun C SDK。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表