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
- 效果
- 安装
安装之后就可以直接使用dalong 这个命令运行应用了(实际上从上边生成的rpm结构就可以看出来)
yum install -y dalong-1.0.0-Linux.rpm
说明
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