博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cmake使用教程(五)-cpack生成安装包
阅读量:6122 次
发布时间:2019-06-21

本文共 3072 字,大约阅读时间需要 10 分钟。

【cmake系列使用教程】

这个系列的文章翻译自官方cmake教程:。

示例程序地址:

不会仅仅停留在官方教程。本人作为一个安卓开发者,实在是没有linux c程序开发经验,望大佬们海涵。教程是在macos下完成,大部分linux我也测试过,有特殊说明的我会标注出来。本教程基于cmake-3.10.2,同时认为你已经安装好cmake。

假如想将我们的项目分发给其他人,以便他们可以安装并使用它。我们希望在各种平台上提供可执行文件或者源文件,构建支持二进制安装和包管理特性的安装包,如cygwin、debian、rpm等。为了实现这一点,我们将使用CPack来创建与CPack在章节包装中描述的平台特定安装程序。具体来说,我们需要在根目录CMakeLists.txt的底部添加几行代码:

# build a CPack driven installer packageinclude (InstallRequiredSystemLibraries)set (CPACK_RESOURCE_FILE_LICENSE       "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")set (CPACK_PACKAGE_VERSION_MAJOR "${Tutorial_VERSION_MAJOR}")set (CPACK_PACKAGE_VERSION_MINOR "${Tutorial_VERSION_MINOR}")include (CPack)复制代码

首先要加入InstallRequiredSystemLibraries。这个模块将包括当前平台项目所需要的任何运行时库。接下来,我们将一些CPack变量,如该项目的许可和版本信息。最后,我们将加入CPack模块,它将使用刚才定义的变量变量和系统的一些其他属性来设置安装程序。 我们执行外部构建并查看生成的文件都有什么:

 ~/Desktop/Tutorial/Step6/build/ tree -L 1.├── CMakeCache.txt├── CMakeFiles├── CPackConfig.cmake├── CPackSourceConfig.cmake├── CTestTestfile.cmake├── Makefile├── MathFunctions├── TutorialConfig.h└── cmake_install.cmake复制代码

注意其中两个生成的文件CPackConfig.cmake,CPackSourceConfig.cmake,一会又大用处。

下一步是按照一般的方式构建项目,然后在其上运行CPack。要构建一个二进制版本,可以运行:

cpack --config CPackConfig.cmake复制代码

下边是日志:

CPack: Create package using STGZCPack: Install projectsCPack: - Run preinstall target for: TutorialCPack: - Install project: TutorialCPack: Create packageCPack: - package: /Users/saka/Desktop/Tutorial/Step6/build/Tutorial-1.0.1-Darwin.sh generated.CPack: Create package using TGZCPack: Install projectsCPack: - Run preinstall target for: TutorialCPack: - Install project: TutorialCPack: Create packageCPack: - package: /Users/saka/Desktop/Tutorial/Step6/build/Tutorial-1.0.1-Darwin.tar.gz generated.复制代码

从日志可以看到生成了两个打包的文件Tutorial-1.0.1-Darwin.sh,Tutorial-1.0.1-Darwin.tar.gz。查看一下目录:

 ~/Desktop/Tutorial/Step6/build/ tree -L 1.├── CMakeCache.txt├── CMakeFiles├── CPackConfig.cmake├── CPackSourceConfig.cmake├── CTestTestfile.cmake├── Makefile├── MathFunctions├── Tutorial├── Tutorial-1.0.1-Darwin.sh├── Tutorial-1.0.1-Darwin.tar.gz├── TutorialConfig.h├── _CPack_Packages├── cmake_install.cmake└── install_manifest.txt复制代码

查看一下压缩包内的文件:

 ~/Desktop/Tutorial/Step6/build/ tar -tf Tutorial-1.0.1-Darwin.tar.gz Tutorial-1.0.1-Darwin/bin/Tutorial-1.0.1-Darwin/bin/TutorialTutorial-1.0.1-Darwin/bin/libMathFunctions.aTutorial-1.0.1-Darwin/include/Tutorial-1.0.1-Darwin/include/MathFunctions.hTutorial-1.0.1-Darwin/include/TutorialConfig.h复制代码

这个是已经编译好的问答压缩而成的,解压后可以直接运行。

要构建一个源代码版本,可以运行:

cpack --config CPackSourceConfig.cmake复制代码

日志输出基本同上,只是包内的文件不一样:

 ~/Desktop/Tutorial/Step6/build/ tar -tf Tutorial-1.0.1-Source.tar.gz Tutorial-1.0.1-Source/CMakeLists.txtTutorial-1.0.1-Source/TutorialConfig.h.inTutorial-1.0.1-Source/tutorial.cxxTutorial-1.0.1-Source/MathFunctions/Tutorial-1.0.1-Source/MathFunctions/MakeTable.cxxTutorial-1.0.1-Source/MathFunctions/mysqrt.cxxTutorial-1.0.1-Source/MathFunctions/CMakeLists.txt...复制代码

当然我们也可以自己编写这两个文件定制我们生成文件的规则,不过我估计只有闲的蛋疼的人才会自己编写者两个东西。

基本的使用教程已完毕,就是这么官方,就是这么坑爹。没有讲如何加入忽略打包的文件,没有讲解如何定制打包生成的文件名称,没有讲解如何制定打包生成的压缩包的位置,没有讲解生成压缩包的类型如何指定。就是这么官方,就是这么坑爹。后边教程我来填一些坑。

转载地址:http://hjwua.baihongyu.com/

你可能感兴趣的文章
react学习总结
查看>>
微软正式发布PowerShell Core 6.0
查看>>
Amazon发布新的会话管理器
查看>>
InfoQ趋势报告:DevOps 和云计算
查看>>
舍弃Python,为什么知乎选用Go重构推荐系统?
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>