专栏名称: saka
目录
相关文章推荐
51好读  ›  专栏  ›  saka

cmake使用教程(十一)-使用cpack打包源码并编写自动化脚本上传到仓库

saka  · 掘金  ·  · 2018-07-20 10:22

正文

阅读 18

cmake使用教程(十一)-使用cpack打包源码并编写自动化脚本上传到仓库

【cmake系列使用教程】

cmake使用教程(一)-起步

cmake使用教程(二)-添加库

cmake使用教程(三)-安装、测试、系统自检

cmake使用教程(四)-文件生成器

cmake使用教程(五)-cpack生成安装包

cmake使用教程(六)-蛋疼的语法

cmake使用教程(七)-流程和循环

cmake使用教程(八)-macro和function

cmake使用教程(九)-关于安卓的交叉编译

cmake使用教程(十)-关于file

在前边的文章中已经讲过了如何使用cpack,但是那只是一个官方的简版教程,这次讲解的是我在实际开发Linux c中遇到的一些cpakc的问题。

简介

CPack是作为一个模块出现在cmake构建系统中的,它是一个非常强大的打包工具,可以用来打包二进制文件或者源码。打包好的二进制文件中包含了所有的cmake install命令需要的安装文件。在打包源码时,也可以生成对应的压缩包。 cpack可以依赖cmake构建生成的config文件,也可以自己编写配置文件。我属于比较懒的类型,直接使用cmake生成的config文件吧。generator是一个比较重要的东西,它算是你要生成的打包文件的类型,cpack默认提供了一个列表来指定这个东西。

主要工作流程:

  1. cpack执行
  2. 寻找CPackConfig.cmake文件
  3. 遍历命令行 -G传入的generator参数,假如没有传入参数,则检查CPackConfig.cmake文件或者CPackSourceConfig.cmake文件中的CPAKC_GENERATOR变量,注意这个优先级的问题,命令行参数会覆盖配置文件的参数。
  4. 为每一个generator来生成对应的打包文件

流程就是如此简单。

具体配置

这里以我自己的一个开源项目为例子来讲解--Sweather,这是个c语言的获取天气的命令行工具。地址: github.com/rangaofei/S…

首先看一下工程目录结构:

.
├── CMakeLists.txt
├── License.txt
├── PIC
├── README.md
├── assets
├── build
├── cmake-build-debug
├── logfile
├── pack
├── sakabrew.sh
└── src
复制代码
  1. CMakeLists.txt是cmake执行的入口文件
  2. License.txt是协议信息
  3. PIC是我自己截的图
  4. README.md是说明文件
  5. assets是资源文件件
  6. build是外部构建的文件夹
  7. cmake-build-debug这个是CLion自动生成的文件夹
  8. src是主要的c文件目录
  9. pack是打包文件的文件夹
  10. sakabrew.sh是我自己编写的自动化文件
  11. logfile是sakabrew.sh文件生成的日志。

主要的CMakeLists.txt配置如下:

CMAKE_MINIMUM_REQUIRED(VERSION 3.8)

set(CMAKE_C_STANDARD 99)
project(SWeather C)

set(VERSION_MAJOR 1)
set(VERSION_MINOR 3)
set(VERSION_PATCH 1)

#采用debug模式时启用'ENABLE_DEBUG'
IF (CMAKE_BUILD_TYPE STREQUAL Debug)
    ADD_DEFINITIONS(-DENABLE_DEBUG)
ENDIF (CMAKE_BUILD_TYPE STREQUAL Debug)

add_subdirectory(src)

include(InstallRequiredSystemLibraries)
set






请到「今天看啥」查看全文