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

如何从CPack构建的Deb包中移除Catkin生成的冗余文件?

解决Catkin/CPack生成Deb包时包含冗余ROS文件的问题

我懂你遇到的麻烦——Catkin在构建过程中自动生成的那些setup配置文件,莫名其妙就被CPack打包进Deb包了,完全是多余的。下面给你几个实用的解决办法,按推荐程度排序:

方法1:用CPack排除规则精准过滤文件

这是最直接的方案,直接告诉CPack打包时忽略这些特定文件。在你的CMakeLists.txt里添加以下配置:

# 定义需要排除的冗余ROS文件列表
set(EXCLUDED_ROS_FILES
    ".catkin"
    "local/.rosinstall"
    "local/env.sh"
    "local/setup.sh"
    "local/setup.bash"
    "local/setup.zsh"
    "local/_setup_util.py"
)

# 将这些文件路径添加到CPack的自动文件列表排除项中
foreach(file ${EXCLUDED_ROS_FILES})
    list(APPEND CPACK_DEBIAN_PACKAGE_EXCLUDE_FROM_AUTO_FILELIST "${CMAKE_INSTALL_PREFIX}/${file}")
endforeach()

# 保留你原有的CPack配置
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Maintainer")
set(CPACK_GENERATOR "DEB")

这个配置会让CPack在生成Deb包时自动跳过这些文件,不会把它们包含进去。

方法2:安装后删除冗余文件

如果方法1没生效,你可以在安装完成后直接从安装目录删除这些文件,这样CPack打包时自然就看不到它们了:

# 在安装步骤完成后删除冗余文件
install(CODE "
    file(REMOVE_RECURSE
        \${CMAKE_INSTALL_PREFIX}/.catkin
        \${CMAKE_INSTALL_PREFIX}/local/.rosinstall
        \${CMAKE_INSTALL_PREFIX}/local/env.sh
        \${CMAKE_INSTALL_PREFIX}/local/setup.sh
        \${CMAKE_INSTALL_PREFIX}/local/setup.bash
        \${CMAKE_INSTALL_PREFIX}/local/setup.zsh
        \${CMAKE_INSTALL_PREFIX}/local/_setup_util.py
    )
")

# 你的原有安装和CPack配置
install(TARGETS ${PROJECT_NAME}_node DESTINATION bin)
install(FILES doc/${PROJECT_NAME}.yaml DESTINATION share)
install(FILES doc/${PROJECT_NAME}.service DESTINATION lib/systemd/system)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Maintainer")
set(CPACK_GENERATOR "DEB")

注意这里用\${CMAKE_INSTALL_PREFIX}转义变量,确保在安装阶段能正确解析路径。

方法3:禁止Catkin生成setup文件(谨慎使用)

如果你完全不需要这些setup文件在开发环境中生效,可以直接让Catkin不要生成它们,但这个选项可能会影响你本地的开发流程,所以只在确定不需要时使用:

# 禁止Catkin生成任何setup相关文件
set(CATKIN_NO_SETUP_FILES ON)

# 你的原有配置...

这个变量会让Catkin跳过所有setup脚本和配置文件的生成,从根源上避免它们被打包。

测试前建议先清理Catkin工作区(catkin clean),再重新构建打包,确保配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:43:52