cmake制作deb包

以前写的程序都是自己布局DEBIAN结构,这次的项目是用cmake管理的,也是第一次接触,想想这东西应该能自动打包了吧,毕竟cmake高大上啊!

找了一下,还真行,cpack就是cmake提供的一个打包工具。


下面是CMakeLists.txt关于打包部分的设置:

#准备的版本设置

set(_VERSION_MAJOR 1)
set(_VERSION_MINOR 0)
set(_VERSION_PATCH 0)

#说明要生成的是deb包

set(CPACK_GENERATOR "DEB")

############下面是设置debian/control文件中的内容

#设置版本信息
set(CPACK_PACKAGE_VERSION_MAJOR "${_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${_VERSION_PATCH}")

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

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

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

#设置依赖
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libstdc++6, libdbus-1-3, libqt5dbus5, libqt5core5a, libqt5gui5, libqt5webkit5, libqt5network5, ssh, sshfs")

#设置section
set(CPACK_DEBIAN_PACKAGE_SECTION "net")

#设置priority
set(CPACK_DEBIAN_PACKAGE_PRIORITY "Optional")

#设置description
set(CPACK_PACKAGE_DESCRIPTION "description")

#设置联系方式
set(CPACK_PACKAGE_CONTACT "support@xxx.cn")

#设置维护人
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "members of support@xxx.cn")

##############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)

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

#把动态库文件安装到指定的位置,这些动态库是程序必须依赖的且无法通过其他方法安装,所以我只能想到用这种笨办法来设置了。
install(FILES ${LIBS_DIR}/libqca-gnupg.so ${LIBS_DIR}/libqca-logger.so DESTINATION /usr/lib/x86_64-linux-gnu/)

#最后把我们的changelog等东西也加进来,project是你的工程名
install(FILES ${DOCS_DIR}/changelog.Debian.gz ${DOCS_DIR}/changelog.gz ${DOCS_DIR}/copyright ${DOCS_DIR}/README.Debian DESTINATION /usr/share/doc/project)

#最后 别忘记最重要的  我们使用cpack工具来实现打包工作的
<span style="color:#FF0000;">include(CPack)</span>
 

设置完成后,打包操作:

首先打开工程目录,也是CMakeLists.txt所在的目录。

$ mkdir build && cd build
$ cmake ..
$ make package

等待编译打包结束就行了,在build目录下就看到deb包了。

参考资料:

网址可能要fanqiang

https://www.debian.org/doc/manuals/maint-guide/dreq.zh-cn.html

https://cmake.org/cmake/help/v2.8.12/cpack.html#variable:CPACK_RPM_CHANGELOG_FILE

https://cmake.org/cmake/help/v3.0/module/CPackDeb.html

https://cmake.org/Wiki/CMake:CPackConfiguration

https://cmake.org/cmake/help/v3.0/command/install.html

https://cmake.org/Wiki/CMake:CPackPackageGenerators

https://cmake.org/Wiki/CMakeUserUseDebian

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值