使用Cmake和Catkin构建Debian的正确方法吗?

问题描述

我正在尝试使用CMake / Cpack构建一个Debian,但是遇到了问题。问题是我的Debian中有不需要的文件。这是由于包含一个子目录而引起的,该子目录包含一个CMakeLists.txt,该目录调用catkin命令以生成ROS msg。

如果我查看debian的内容,我会在/ usr / include /中看到生成的头文件,在/ usr / share中看到消息文件。但是我只希望我的Debian在我使用install()指定的/ opt / bin中保存文件

下面是一个简化的示例。如果我运行以下命令:

  • mkdir构建
  • 光盘制作
  • cmake ..
  • 制作
  • cpack

结果是一个包含/ opt / my-pkg / bin / main的deb包(很棒),但是它在/ usr / local,/ usr / lib,/ usr / share中也包含了我不喜欢的几个文件不想成为Debian中的一员。我确定必须有一种使用CMake / CPack的方式仅用我想要的特定文件创建一个Debian,但是我不确定该怎么做。

文件

+ my_project
  + CMakeLists.txt
  + main
    + CMakeLists.txt
    + main.cpp
  + my_msgs
    + CMakeLists.txt
    + package.xml
    + msg
      + BoundingBox.msg
# Top level CMakeLists.txt

cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
project(my_project VERSION 1.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)

# put all executables into bin directory and all libraries into lib directory
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

# the directory name all targets will be installed to in the debian
set(install_dir "/opt/my-pkg/bin") 

# LIST OF ALL DIRECTORIES TO BE BUILT
set(Dirs 
  my_msgs
  main
 )

foreach(dir ${Dirs})
  add_subdirectory(${dir} ${dir})
endforeach()

# CPACK debian settings
set(CPACK_GENERATOR "DEB")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Matthew Mosley")
include(CPack)
# my_msgs/CMakeLists.txt (this is the CMakeLists.txt that is generating extra unwanted files in my debian)

project(my_msgs)

find_package(catkin required 
  geometry_msgs
  message_generation
  std_msgs
  sensor_msgs
  )

add_message_files(FILES BoundingBox.msg)

generate_messages(
  DEPENDENCIES
  geometry_msgs
  std_msgs
  sensor_msgs)
# my_msgs/package.xml

<?xml version="1.0"?>
<package>
  <name>my_msgs</name>
  <version>0.0.0</version>
  <description> my_msgs package</description>


  <license>BSD</license>


     <build_depend>message_generation</build_depend>

     <run_depend>message_runtime</run_depend> 

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_depend>uuid_msgs</build_depend>
  <build_depend>geometry_msgs</build_depend>
  <run_depend>roscpp</run_depend>
  <run_depend>std_msgs</run_depend>
  <run_depend>uuid_msgs</run_depend>
  <run_depend>geometry_msgs</run_depend>

  <export>


  </export>
</package>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)