cmake制作deb包
来源:互联网 发布:软件技术开发合同 编辑:程序博客网 时间:2024/04/29 12:36
以前写的程序都是自己布局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")#设置sectionset(CPACK_DEBIAN_PACKAGE_SECTION "net")#设置priorityset(CPACK_DEBIAN_PACKAGE_PRIORITY "Optional")#设置descriptionset(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
0 0
- cmake制作deb包
- 如何制作deb包
- 制作Deb包
- 从无到有制作DEB包
- 如何制作deb包
- 制作deb包
- 制作Deb包
- deb包制作
- 制作deb包
- Deb包的制作
- 制作deb包
- 自己制作deb 包
- 快速制作deb包
- deb包的制作
- deb安装包的制作
- deb包制作 学习备忘
- deb安装包的制作
- linux下制作deb包
- 简单DOM解析之dom4j(二)
- ODS
- Ceph命令之ceph
- ucore中Makefile 内核文件组织全解析,学习软件的组织方式
- oracle 11g em配置数据库
- cmake制作deb包
- xml查找
- poj2029 2010.4.14
- Error:(1, 0) Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRID
- 你的计划为什么执行不下去?
- BZOJ-1901 Zju2112 Dynamic Rankings 函数式线段树 套 树状数组+离线处理
- poj1029 2010.4.14
- Ceph命令之ceph mon(Monitor管理)
- poj1112 2010.4.15