Advertisement

cmake制作deb包

阅读量:

之前开发的软件都是按照Debian系统结构进行布局的, 而当前项目则由我负责管理, 这也是我初次接触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

全部评论 (0)

还没有任何评论哟~