cmake 实际上包含了构建,测试,以及打包的能力,以下是一个简单的rpm 打包测试(cpack 模块)

项目结构

├── CMakeLists.txt
├── README.md
├── add.c
├── add.h
└── main.c
├── README.md

代码说明

main.c 为一个入口(可执行文件)CMakeLists.txt 是cmake 的定义包含了基于cpack 的rpm 构建配置,add.c 以及add.h 是一个简单的模块
main.c 为引用

  • CMakeLists.txt

 

cmake_minimum_required(VERSION 2.8)
 
project(dalong)
 
# cpack 需要的一个变量,比如rpm 的版本,包名称。。。。
set(CPACK_GENERATOR "RPM")
set(CPACK_PACKAGE_NAME "dalong")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Simple CPack demo")
set(CPACK_PACKAGE_VENDOR "dalong")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_RPM_PACKAGE_GROUP "dalong")
set(CPACK_PACKAGE_RELEASE 1)
set(CPACK_RPM_PACKAGE_LICENSE "Apache Licence")
 
# 添加cpack 模块
include(CPack)
# main 的构建
add_executable(dalong main.c)
 
# add 模块的构建
add_library(dalongmyadd add.c)
 
set_target_properties(dalongmyadd PROPERTIES OUTPUT_NAME myadd)
 
target_link_libraries(dalong dalongmyadd)
 
target_include_directories(dalong PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
# 安装
install(TARGETS dalong DESTINATION bin)

 

构建&&效果

  • 构建
mkdir build 
cd build 
cmake ..
cpack 
  • 效果

cmake 进行rpm包构建_html

  • 安装
    安装之后就可以直接使用dalong 这个命令运行应用了(实际上从上边生成的rpm结构就可以看出来)

 

yum install -y dalong-1.0.0-Linux.rpm

cmake 进行rpm包构建_html_02

说明

cmake 同时也包含了install 可以对于构建的包进行安装,但是很利于软件的分发,对于linux 基于rpm 等一些工具是比较标准的玩法

参考资料

https://cmake.org/cmake/help/latest/cpack_gen/rpm.html
https://cmake.org/cmake/help/latest/module/CPack.html#module:CPack
https://github.com/rongfengliang/cmake_rpm_learning