cpack
一. 简介
CPack是CMake 2.4.2之后的一个内置工具,主要作用就是生成制定类型的安装包.它可以脱离cmake单独运行.
二. 基本设置 (mandatory)
- 设置包类型
set(CPACK_GENERATOR "DEB")
NOTE:参数可以是你所知道的任意压缩包类型,rpm,tar.gz等等,请参见官方wiki
- 设置软件包版本
set(CPACK_PACKAGE_VERSION "2.1")
NOTE:当然cpack还提供了CPACK_PACKAGE_VERSION_MAJOR/CPACK_PACKAGE_VERSION_MINOR/CPACK_PACKAGE_VERSION,
这三个合起来的功能和CPACK_PACKAGE_VERSION的作用是一样的
- 设置软件包名称
set(CPACK_PACKAGE_NAME "omatrix")
- 设置软件包装位置
set(CPACK_SET_DESTDIR true)
set(CPACK_INSTALL_PREFIX "/opt/omatrix/")
- 设置软件包生成的位置
set(CPACK_OUTPUT_FILE_PREFIX ${CMAKE_CURRENT_SOURCE_DIR})
- 设置维护者信息
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "EFlag")
- 设置描述文件
set(CPACK_PACKAGE_DESCRIPTION "OMatrix core to capture and decode the traffic")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY, "Packet capturing and decoding")
- 设置安装包约束关系
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc7 (>= 2.3.1-6) ")
- 设置自动执行脚本(这一项比较重要)
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/DEBIAN/postinst;${CMAKE_SOURCE_DIR}/DEBIAN/postrm;")
基本上所有的安装包都会在安装之前或这安装之后执行一些操作,这就需要用到这个选项.
总共有四种脚本:preinst(安装前执行), postinst(安装后执行), prerm(删除前执行), postrm(删除后执行)
还要注意的就是这些脚本的权限问题,不要使用chmod u+x来赋权限,最好使用chmod 0777
- 这一句放在CMakeLists.txt文件最后,不能少
include(CPack)
三. 语法
在cpack中你要掌握的唯一语法就是install, 这个主要就是在制作安装包的过程中调用的
- 目标文件
install(TARGETS <targets>[[ARCHIVE|LIBRARY|RUNTIME][DESTINATION <dir>][PERMISSIONS <permissions>[Debug|Release..]][COMPONENT <component>][OPTIONAL]][...])简单例子:INSTALL(TARGETS myrun mylib mystaticlibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)上面的例子会将:可执行二进制 myrun 安装到${CMAKE_INSTALL_PREFIX}/bin 目录动态库 libmylib 安装到${CMAKE_INSTALL_PREFIX}/lib 目录静态库 libmystaticlib 安装到${CMAKE_INSTALL_PREFIX}/libstatic 目录特别注意的是你不需要关心 TARGETS 具体生成的路径,只需要写上 TARGETS 名称就可以了
- 非目标文件的可执行程序(当然也可以是目标文件的可执行程序)
INSTALL(PROGRAMS files... DESTINATION <dir>[PERMISSIONS permissions...][CONFIGURATIONS [Debug|Release|...]][COMPONENT <component>][RENAME <name>] [OPTIONAL])简单例子:install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/control DESTINATION opt/omatrix/bin)将control安装到/opt/omatrix/bin下
- 普通文件的安装:
INSTALL(FILES files... DESTINATION <dir>[PERMISSIONS permissions...][CONFIGURATIONS [Debug|Release|...]][COMPONENT <component>][RENAME <name>] [OPTIONAL])
- 目录的安装:
INSTALL(DIRECTORY dirs... DESTINATION <dir>[FILE_PERMISSIONS permissions...][DIRECTORY_PERMISSIONS permissions...][USE_SOURCE_PERMISSIONS][CONFIGURATIONS [Debug|Release|...]][COMPONENT <component>][[PATTERN <pattern> | REGEX <regex>][EXCLUDE] [PERMISSIONS permissions...]] [...])简单例子:install(DIRECTORY tool DESTINATION ${INSTALL_PATH}FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTEGROUP_READ GROUP_EXECUTEWORLD_READ WORLD_EXECUTE)
- 在安装的时候执行一些shell命令
install(CODE"EXECUTE_PROCESS(COMMAND cp -r /opt/omatrix/lib ${CMAKE_SOURCE_DIR})")install(CODE"execute_process(COMMAND rm -rf ${CMAKE_SOURCE_DIR}/lib/.svn ${CMAKE_SOURCE_DIR}/lib/capture/.svn)")
四. 生成安装包命令
make package
基本上有了这些就可以制作出你自己的安装包了
cpack的更多相关文章
- cmake cpack 安装打包程序
//set(CPACK_GENERATOR "TGZ") 7Z(.7z) 7Zzip(.7z) TBZ2(tar.bz2) TGZ(.tar.gz) TXZ(.tar.xz) TZ ...
- Red Hat5下源码安装mysql5.6过程记录
1.安装cmake包 [root@edu soft]# tar -xzf cmake-.tar.Z [root@edu soft]# cd cmake- [root@edu cmake-]# ./co ...
- CMake使用教程
转自 RichardXG 原文 CMake使用教程 CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目. 通过编写CMak ...
- 非常陌生的cmake
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...
- CMake入门指南-编译教程
CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目.通过编写CMakeLists.txt,可以控制生成的Makefile, ...
- Chocolatey的安装与使用
@(编程) 前言 在 Linux 下,大家喜欢用 apt-get 来安装应用程序,如今在 windows 下,大家可以使用 Chocolatey 来快速下载搭建一个开发环境. Chocolatey 的 ...
- Percona-Server-5.5.15源码安装
[root@localhost rpm]# ll total 19148 -rw-r--r-- 1 root root 562628 Jan 18 2007 bison-2.3-2.1.x86_ ...
- [转载] CMake Official Tutorial——教程还是官方的好
CMake官方教程传送门:https://cmake.org/cmake-tutorial/ 以下的内容跟官方教程基本一致,少数地方根据自己的测试有所改动: A Basic Starting Poin ...
- CMake 简单介绍 图
http://tech.uc.cn/?p=914 CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran ...
随机推荐
- thinkphp 访问其它控制器模板
默认的访问该方法对应得模板:$this->display() 访问其它控制器模板:$this->display(‘控制器名/方法’)
- oracle—无法启动
pl/sql连接oracle,出现下列错误,即没有启动该数据库的监听程序 启动该数据库的监听程序,出现如下错误,即未配置监听器 配置监听器
- context.Request.Files为NULL问题
在实现图片上传功能的时候出现在ashx等处理页面出现context.Request.Files为NULL异常,有几点需要注意: 1.在客户端可以将form用submit提交,如下: <%@ Pa ...
- mysql 如何用root 登录
mysql -uroot -p 如果没有密码,按两下回车就进去了
- Jquery 对象转json ,Json转对象。兼容浏览器。
引入jquery 转json库 [ 文件大小为2.2K] <script type="text/javascript" src="https://jquery-js ...
- java使用jacob将office转pdf
1.此处代码是把office文档转换成pdf的工具类,在BS架构的产品中,我们可以使用基于JS的pdf插件显示pdf文档,但是前提IE需要按照adobe的pdf软件,对于非IE不用安装.2.可以基于f ...
- How to Modify Public Network Information including VIP in Oracle Clusterware (文档 ID 276434.1)
APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0.3 to 12.1.0.2 [Release 11.2 to 12. ...
- 使用pscp实现Windows 和 Linux服务器间远程拷贝文件
转自:http://www.linuxidc.com/Linux/2012-05/60966.htm 在工作中,每次部署应用时都需要从本机Windows服务器拷贝文件到Linux上,有时还将Linux ...
- mysql命令整理0919 不定期更新中
1)新建数据库 create database +database_name: 查询数据库 show databases; 切换数据库 use database_na ...
- 使用 iMacros 来自动化日常的工作
利用 iMacros 的浏览器附加组件来提高工作效率 介绍 iMacros 这个强大的工具,使用简单的范例演示了如何使用这个工具来完成对于网页的操作,对于大量的具有重复性的工作内容尤其可以提高效率.对 ...