问题描述
我正在尝试使用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 (将#修改为@)