Cmake打包deb包

72 篇文章 2 订阅
48 篇文章 5 订阅

在cmake打包的时候,最常见的几个步骤就是:

#打开工程目录,即外层CMakeLists.txt所在的目录
$ mkdir build && cd build
$ cmake ..
$ make package

1、一些参考学习资料

比较全的资料:

https://blog.csdn.net/u012156872/category_11506985.html

参考资料:Cpack入门

https://zhuanlan.zhihu.com/p/141956373

camke install:

https://blog.csdn.net/qq_38410730/article/details/102837401

用CMake打包deb包流程完整版(带字段解析):

https://blog.csdn.net/qq_29935433/article/details/104684523

CMake 交叉编译学习(使用CPack打成deb包):

https://blog.csdn.net/micah2017/article/details/125127953

deb 包详解:

https://blog.csdn.net/weixin_42553314/article/details/118696651

2、一个比较通用的CMakeLists.txt ,包含打包流程

cmake_minimum_required(VERSION 3.5)

project(jt808-server)

set(JT808_VERSION_MAJOR 1)
set(JT808_VERSION_MINOR 0)

set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wfatal-errors")


include_directories("${PROJECT_SOURCE_DIR}")
include_directories("${PROJECT_BINARY_DIR}")


add_subdirectory(bcd)
add_subdirectory(unix_socket)

add_subdirectory(common)
add_subdirectory(service)


add_executable(jt808service main/service_main.cc)

target_link_libraries(jt808service PRIVATE
  jt808_service
)


add_executable(jt808command main/command_main.cc)

target_link_libraries(jt808command PRIVATE
  unix_socket
)


##################################安装打包(通用)#######################################



#准备的版本设置
set (MAJOR_VERSION "1")
set (MINOR_VERSION "2")
set (PATCH_VERSION "3")


#设置架构
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")


#说明要生成的是deb包
SET(CPACK_GENERATOR "DEB")


install(TARGETS  jt808service 
        ARCHIVE DESTINATION lib
        LIBRARY DESTINATION lib
        RUNTIME DESTINATION bin
        )


#设置版本信息
set (CPACK_PACKAGE_NAME                 "${PROJECT_NAME}")
set (CPACK_PACKAGE_VERSION "1.0.1") 
# set (CPACK_PACKAGE_VERSION_MAJOR        "${MAJOR_VERSION}")
# set (CPACK_PACKAGE_VERSION_MINOR        "${MINOR_VERSION}")
# set (CPACK_PACKAGE_VERSION_PATCH        "${PATCH_VERSION}")

# 设置软件包版本
#set(CPACK_PACKAGE_VERSION "2.1") 
# NOTE:当然cpack还提供了CPACK_PACKAGE_VERSION_MAJOR;
# CPACK_PACKAGE_VERSION_MINOR;
# CPACK_PACKAGE_VERSION_PATCH,
# 这三个合起来的功能和CPACK_PACKAGE_VERSION的作用是一样的


#message("${CPACK_PACKAGE_VERSION}")

#设置安装包的包名,打好的包将会是packagename-version-linux.deb,如果不设置,默认是工程名
#set(CPACK_PACKAGE_NAME "xcl")

#设置程序名,就是程序安装后的名字
set(CPACK_DEBIAN_PACKAGE_NAME "xiaole")

#获取编译时间
string(TIMESTAMP COMPILE_TIME %Y%m%d_%H%M%S)
set(build_time    ${COMPILE_TIME})

#设置打出来的包名
set(CPACK_PACKAGE_FILE_NAME  xcl-${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${COMPILE_TIME}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}) 


#设置安装路径
set(CPACK_PACKAGING_INSTALL_PREFIX  "/home/xcl/install")

#设置依赖
#set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libc6 (< 2.4)")


#设置需要打包的路径,如果未设置就是构建目录 也可以通过-B指定
#set(CPACK_PACKAGE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/jt808-server")


#设置包的供应商
set(CPACK_PACKAGE_VENDOR "CMAKE")

#设置包的描述文件
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/INSTALL.md")

#设置包简短的描述
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "this is a Jt808server CPack")

#设置description
SET(CPACK_PACKAGE_DESCRIPTION "jt808 service - xcl")

#设置包管理者联系方式和管理者维护人
set (CPACK_PACKAGE_CONTACT              "xuchangle@163.com")
set (CPACK_DEBIAN_PACKAGE_MAINTAINER    "xuchangle")


#设置section
set(CPACK_DEBIAN_PACKAGE_SECTION "net")

#设置priority
set(CPACK_DEBIAN_PACKAGE_PRIORITY "Optional")


#以上都配置完后,最后加这句话
include(CPack)

##############debian/control设置完成了,下面设置控制脚本,动态库,changelog等#################

#lib目录下保存这一些动态库和安装控制脚本(postinst、postrm、preinst、prerm)  
#doc目录下是changelog和copyright等文件
#SET(LIBS_DIR ${CMAKE_SOURCE_DIR}/lib)
#SET(DOCS_DIR ${CMAKE_SOURCE_DIR}/doc)

#打印
message("CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}")
message("PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")


#设置控制脚本,这些都是打包者本人自己准备的,没有就算了
#set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
# "${CMAKE_SOURCE_DIR}/scripts/postinst;${CMAKE_SOURCE_DIR}/scripts/postrm;${CMAKE_SOURCE_DIR}/scripts/prerm")


#将文件安装时copy到某个目录下
INSTALL(FILES ${CMAKE_SOURCE_DIR}/jt808_log/config/zlog.conf  DESTINATION  /home/xcl/install/jt808_log/)

#将库文件安装到/usr/lib下
#INSTALL(FILES ${LIBS_DIR}/libdb-4.8.so ${LIBS_DIR}/libdbxml-2.5.so ${LIBS_DIR}/libxerces-c-3.0.so ${LIBS_DIR}/libxqilla.so.5 ${LIBS_DIR}/libxqilla.so.5.0.2  DESTINATION /usr/lib)

3、dpkg相关命令

#安装(解包并配置) 
dpkg -i|--install <.deb file name>
#dpkg -i mydeb-1.deb

#强制安装
dpkg --force-depends -i mydeb-1.deb

#解包:该命令仅对 “mydeb-1.deb”进行解包操作,不会执行包配置工作
dpkg --unpack mydeb-1.deb

#卸载:删除包,但保留配置文件
dpkg -r|--remove <package> 
# dpkg -r my-deb 
#该命令删除包,且删除配置文件
dpkg -P|--purge my-deb         

#查看deb包是否安装/deb包的信息 
dpkg -s|--status <package>
# dpkg -s my-deb

#查看deb包文件内容 
dpkg -c mydeb-1.deb

#查看当前目录某个deb包的信息
dpkg --info mydeb-1.deb

#解压deb中所要安装的文件
#第一个参数为所要解压的deb包,第二个参数为将deb包解压到指定的目录
dpkg -x  mydeb-1.deb mydeb-1

#解压deb包中DEBIAN目录下的文件(至少包含control文件)
dpkg -e mydeb-1.deb mydeb-1/DEBIAN

#列出与该包关联的文件 dpkg -L|--listfiles <package>
dpkg -L my-deb 

#配置软件包 
dpkg --configure <package>
# dpkg --configure my-deb


#解压deb包中DEBIAN目录下的文件(至少包含control文件)
dpkg -e mydeb-1.deb mydeb-1/DEBIAN

#列出与该包关联的文件 dpkg -L|--listfiles <package>
dpkg -L my-deb 

#配置软件包 
dpkg --configure <package>
# dpkg --configure my-deb

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值