You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ROS Bloom生成C++库的运行时与开发Deb包?

问题

我实现了一个具备若干功能的C++库,通过以下命令编译并安装后,其他包可找到并调用该库:

mkdir build
cmake ..
make
sudo make install

我希望为该库创建Debian包,使用ROS Bloom工具执行以下命令时仅生成单个二进制包:

bloom-generate debian --os-name ubuntu --os-version jammy
fakeroot debian/rules binary

但我需要拆分出两个包:一个用于运行时库,供非开发用户使用;另一个包含头文件、CMake等开发工具,供开发者使用。请问是否可通过ROS Bloom实现此需求?我希望继续使用Bloom以简化运行时与编译时依赖管理。

解决方案

完全可以通过ROS Bloom实现这个需求,具体步骤如下:

  • 调整CMakeLists.txt的安装规则
    确保你的CMake脚本将运行时文件和开发文件分开安装:

    • 对于共享库,指定运行时安装路径:
      install(TARGETS your_library
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib
        RUNTIME DESTINATION bin
      )
      
    • 单独安装头文件到标准开发目录:
      install(DIRECTORY include/your_library
        DESTINATION include
      )
      
    • 安装CMake配置文件到开发包专属的cmake目录:
      install(FILES cmake/YourLibraryConfig.cmake
        DESTINATION lib/cmake/your_library
      )
      
  • 使用Bloom的拆分参数生成Debian配置
    在执行bloom-generate时添加--split-debs参数,这个参数会自动触发运行时包和开发包的拆分:

    bloom-generate debian --os-name ubuntu --os-version jammy --split-debs
    
  • 编译生成拆分后的包
    继续执行二进制包编译命令:

    fakeroot debian/rules binary
    

    执行完成后,你会得到两个.deb文件:

    • your-library-name:包含运行时共享库,供非开发用户安装使用;
    • your-library-name-dev:包含头文件、CMake配置文件等开发必需资源,供开发者使用。
  • 验证包内容
    可以用dpkg -c命令检查包内的文件结构,确认拆分是否符合预期:

    dpkg -c your-library-name_*.deb  # 查看运行时包内容
    dpkg -c your-library-name-dev_*.deb  # 查看开发包内容
    

内容的提问来源于stack exchange,提问作者apalomer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:05:23