制作deb文件
首先看下我们的代码架构:
功能包1
├── CMakeLists.txt 我们需要在这里添加CmakeLists.txt
├── src
│ ├── CMakeLists.txt
│ └── 功能包2
│ ├── CMakeLists.txt
│ └── src
│ └── xxxx.cpp
1. 编写Cmakelists.txt文件
cmake_minimum_required(VERSION 3.10.2)
project(packet VERSION 0.0.4)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
)
find_package(PCL REQUIRED)
find_package(OpenCV REQUIRED)
include_directories(include ${catkin_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
add_executable(packet_node src/xxxxx.cpp)
target_link_libraries(packet_node
${catkin_LIBRARIES}
${PCL_LIBRARIES}
${OpenCV_LIBS}
)
// 开始添加cpack配置
include(InstallRequiredSystemLibraries)
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR})
set(CPACK_SOURCE_IGNORE_FILES build)
set(CPACK_PACKAGE_CONTACT "xxx@qq.com")
set(CPACK_PACKAGE_DESCRIPTION "packet program")
include(GNUInstallDirs)
install(TARGETS packet_node
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
include(CPack)
2. 编译
step1:在该功能包1下,执行相关命令:
cd 功能包1
mkdir build && cd build
cmake ..
此时会在build目录下生成两个CPack配置文件: CPackConfig.cmake 和 CPackSourceConfig.cmake,前者用于生成安装文件,后者用于生成源代码
step2:生成源码包
cpack --config CPackSourceConfig.cmake
执行后会生成4个源码压缩包
step3:生成deb包
cpack -G DEB
至此,在build文件夹,即可看到关于功能包1的deb包。