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
原创粉丝点击