CMake -- CPack工具

2024-06-01 22:48
文章标签 工具 cmake cpack

本文主要是介绍CMake -- CPack工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CMake – CPack工具

简介

基于上一篇的 cmake与qmake转换,然后写了这一篇CMake打包工具。

官网介绍:Configure generators for binary installers and source packages

本篇主要介绍打包的为deb安装包。

支持打包格式

  • 7Z(7-Zip file format)
  • DEB (Debian packages)
  • External (CPack External packages)
  • IFW (Qt Installer Framework)
  • NSIS (Null Soft Installer)
  • NSIS64 (Null Soft Installer (64-bit))
  • NuGet (NuGet packages)
  • RPM (RPM packages)
  • STGZ (Self extracting Tar GZip compression
  • TBZ2 (Tar GZip compression)
  • TXZ (Tar XZ compression)
  • TZ (Tar Compress compression)
  • ZIP (ZIP file format)

语法介绍

demo

demo是直接粘贴在CMakeList.txt最后。

include (InstallRequiredSystemLibraries)set(_VERSION_MAJOR 1)
set(_VERSION_MINOR 1)
set(_VERSION_PATCH 0)set(CPACK_GENERATOR "DEB")set(CPACK_PACKAGE_VERSION_MAJOR "${_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${_VERSION_PATCH}")set(CPACK_PACKAGING_NAME "xxxx")
set(CPACK_SET_DESTDIR ON)
set(CPACK_INSTALL_PREFIX "/usr/local/xxxx")
set(CPACK_DEBIAN_PACKAGE_NAME "xxxx")
set(CPACK_PACKAGE_DESCRIPTION "xxxxx Package")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CMAKE_HOST_SYSTEM_PROCESSOR}")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "freerdp (>= 2.2.0), spice-gtk (>=0.35), cJSON (), celt (>=0.5.1.3), paho.mqtt.c (>=1.3.1), spice-protocol (>=0.12.14), usbredir (>=0.8.0)"
set(CPACK_PACKAGE_DESCRIPTION "xxxxx")
set(CPACK_PACKAGE_CONTACT "xxxx")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "SiYuetian")
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../output)install_files(/depends FILES ${CMAKE_CURRENT_SOURCE_DIR}/../depends/)
install_files(/res FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/)
install_files(/lib FILES ./lib/)
install_files(. FILES ./RdpClient)
include(CPack)
#引入 InstallRequiredSystemLibraries 模块,支持cpack
include (InstallRequiredSystemLibraries)#设置打包格式 deb
set(CPACK_GENERATOR "DEB")#设置版本信息: 
##主版本信息
set(_VERSION_MAJOR 1)
##次版本信息
set(_VERSION_MINOR 1)
##补丁信息
set(_VERSION_PATCH 0)##主版本信息
set(CPACK_PACKAGE_VERSION_MAJOR "${_VERSION_MAJOR}")
##次版本信息
set(CPACK_PACKAGE_VERSION_MINOR "${_VERSION_MINOR}")
##补丁信息
set(CPACK_PACKAGE_VERSION_PATCH "${_VERSION_PATCH}")#设置生成包名
set(CPACK_PACKAGING_NAME "xxxx")
#开启包重定向
set(CPACK_SET_DESTDIR ON)
#设置安装位置
set(CPACK_INSTALL_PREFIX "/usr/local/xxxx")
#设置deb包名,包名格式 ${CPACK_DEBIAN_PACKAGE_NAME}.版本信息.平台信息.deb
set(CPACK_DEBIAN_PACKAGE_NAME "xxxx")
#设置包描述
set(CPACK_PACKAGE_DESCRIPTION "xxxxx Package")
#设置包安装平台信息
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CMAKE_HOST_SYSTEM_PROCESSOR}")
#设置依赖包信息
set(CPACK_DEBIAN_PACKAGE_DEPENDS "freerdp (>= 2.2.0), spice-gtk (>=0.35), cJSON (), celt (>=0.5.1.3), paho.mqtt.c (>=1.3.1), spice-protocol (>=0.12.14), usbredir (>=0.8.0)"
#设置联系人信息
set(CPACK_PACKAGE_CONTACT "xxxx")
#设置维护人信息
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "SiYuetian")
#设置包输出路径
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../output)#设置安装文件
##设置依赖文件-${CPACK_INSTALL_PREFIX}/depends
install_files(/depends FILES ${CMAKE_CURRENT_SOURCE_DIR}/../depends/)
##设置资源文件-${CPACK_INSTALL_PREFIX}/res
install_files(/res FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/)
##设置依赖库文件-${CPACK_INSTALL_PREFIX}/lib
install_files(/lib FILES ./lib/)
##设置可执行文件-${CPACK_INSTALL_PREFIX}/
install_files(. FILES ./RdpClient)
#引入CPack
include(CPack)

语法详解

install()

查看该博客: install详解

cmake官方解释:install()

install_files()

  • tall_files(<dir> extension file file ...)
    

    Create rules to install the listed files with the given extension into the given directory. Only files existing in the current source tree or its corresponding location in the binary tree may be listed. If a file specified already has an extension, that extension will be removed first. This is useful for providing lists of source files such as foo.cxx when you want the corresponding foo.h to be installed. A typical extension is .h

  • install_files(<dir> regexp)
    

    Any files in the current source directory that match the regular expression will be installed.

  • install_files(<dir> FILES file file ...)
    

    Any files listed after the FILES keyword will be installed explicitly from the names given. Full paths are allowed in this form.

install_targets()

  • install_targets(<dir> [RUNTIME_DIRECTORY dir] target target)
    

    Create rules to install the listed targets into the given directory. The directory <dir> is relative to the installation prefix, which is stored in the variable CMAKE_INSTALL_PREFIX. If RUNTIME_DIRECTORY is specified, then on systems with special runtime files (Windows DLL), the files will be copied to that directory.

install_programs()

  • install_programs(<dir> file1 file2 [file3 ...])
    install_programs(<dir> FILES file1 [file2 ...])
    

    Create rules to install the listed programs into the given directory. Use the FILES argument to guarantee that the file list version of the command will be used even when there is only one argument.

  • install_programs(<dir> regexp)
    

    In the second form any program in the current source directory that matches the regular expression will be installed.

注意:<dir>为默认路径,例如上文install_files(/lib FILES ./lib/),安装文件路径为 ${CPACK_INSTALL_PREFIX}/lib,重定向安装路径已经默认引入,<dir>默认等同于${CPACK_INSTALL_PREFIX}/<dir>,为重定向路径的相对路径.

生成

下边是一个简单的生成脚本.

#!/bin/bash
#cd 'dirname $0'mkdir -p build
cd build
cmake .. $1 #$1是CMake编译参数,可自由扩展
make -j`lscpu  -J|grep '"CPU(s):"'|awk 'BEGIN{FS="\""}{print$8}'`
mkdir -p lib
cp `ldd ./RdpClient | cut -d ">" -f 2 |grep lib|cut -d "(" -f 1|xargs` lib/
cpack --config CPackConfig.cmake --verbose
cd ..
rm -rf build

这篇关于CMake -- CPack工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1022317

相关文章

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

超强的截图工具:PixPin

你是否还在为寻找一款功能强大、操作简便的截图工具而烦恼?市面上那么多工具,常常让人无从选择。今天,想给大家安利一款神器——PixPin,一款真正解放双手的截图工具。 想象一下,你只需要按下快捷键就能轻松完成多种截图任务,还能快速编辑、标注甚至保存多种格式的图片。这款工具能满足这些需求吗? PixPin不仅支持全屏、窗口、区域截图等基础功能,它还可以进行延时截图,让你捕捉到每个关键画面。不仅如此

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

10个好用的AI写作工具【亲测免费】

1. 光速写作 传送入口:http://u3v.cn/6hXWYa AI打工神器,一键生成文章&ppt 2. 讯飞写作 传送入口:http://m6z.cn/5ODiSw 3. 讯飞绘文 传送入口:https://turbodesk.xfyun.cn/?channelid=gj3 4. AI排版助手 传送入口:http://m6z.cn/6ppnPn 5. Kim

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

生信圆桌x生信分析平台:助力生物信息学研究的综合工具

介绍 少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 生物信息学的迅速发展催生了众多生信分析平台,这些平台通过集成各种生物信息学工具和算法,极大地简化了数据处理和分析流程,使研究人员能够更高效地从海量生物数据中提取有价值的信息。这些平台通常具备友好的用户界面和强大的计算能力,支持不同类型的生物数据分析,如基因组、转录组、蛋白质组等。

IntelliJ IDEA - 强大的编程工具

哪个编程工具让你的工作效率翻倍? 在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。那么,哪款编程工具让你的工作效率翻倍?是智能的代码编辑器,强大的版本控制工具,还是那些让你事半功倍的自动化脚本?在这里我推荐一款好用的编程工具:IntelliJ IDEA。 方向一:工具介绍 Int

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec