cmake入门系列总结六

此博客为cmake入门系列总结六,主要介绍将项目分发给他人,构建支持二进制安装和软件包管理功能的安装包。使用CPack创建特定平台安装程序,需在顶级CMakeLists.txt文件底部添加几行代码,还说明了构建二进制和源分发的操作,最后提及开源软件许可方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cmake入门系列总结六


版本说明

版本作者日期备注
0.1loon2019.3.17初稿

目录

一、主旨

接下来假设我们想要将项目分发给其他人,以便他们可以使用它。我们希望在各种平台上提供二进制和源代码分发。这与我们之前在安装和测试(步骤3)部分中所做的安装略有不同,我们正在安装从源代码构建的二进制文件。在此示例中,我们将构建支持二进制安装和软件包管理功能的安装包,如cygwin,debian,RPM等中所示。

二、过程

为实现此目的,我们将使用CPack创建特定于平台的安装程序,如使用CPack打包一章中所述。具体来说,我们需要在我们的顶级CMakeLists.txt文件的底部添加几行。

# build a CPack driven installer package
include (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模块,它将使用这些变量和您所使用的系统的其他一些属性来设置安装程序。

下一步是以通常的方式构建项目,然后在其上运行CPack。要构建二进制分发,您将运行:

cpack --config CPackConfig.cmake

要创建源分发,请键入:

cpack --config CPackSourceConfig.cmake

正常运行基本和第五节一样:

loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ cmake ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/loon/work/cmake_test/Tutorial/build
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ make
Scanning dependencies of target Tutorial
[ 50%] Building CXX object CMakeFiles/Tutorial.dir/tutorial.cpp.o
[100%] Linking CXX executable Tutorial
[100%] Built target Tutorial
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ ls
CMakeCache.txt  cmake_install.cmake  CPackSourceConfig.cmake  DartConfiguration.tcl  Testing   TutorialConfig.h
CMakeFiles      CPackConfig.cmake    CTestTestfile.cmake      Makefile               Tutorial
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ ./Tutorial 
./Tutorial Version 1.0
Usage:./Tutorial number
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ ./Tutorial 2
The square root of 2 is 1.41421

打包及安装二进程过程:

loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ cpack --config CPackConfig.cmake
CPack: Create package using STGZ
CPack: Install projects
CPack: - Run preinstall target for: Tutorial
CPack: - Install project: Tutorial
CPack: Create package
CPack: - package: /home/loon/work/cmake_test/Tutorial/build/Tutorial-..1-Linux.sh generated.
CPack: Create package using TGZ
CPack: Install projects
CPack: - Run preinstall target for: Tutorial
CPack: - Install project: Tutorial
CPack: Create package
CPack: - package: /home/loon/work/cmake_test/Tutorial/build/Tutorial-..1-Linux.tar.gz generated.
CPack: Create package using TZ
CPack: Install projects
CPack: - Run preinstall target for: Tutorial
CPack: - Install project: Tutorial
CPack: Create package
CPack: - package: /home/loon/work/cmake_test/Tutorial/build/Tutorial-..1-Linux.tar.Z generated.
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ ls
CMakeCache.txt       _CPack_Packages          install_manifest.txt  Tutorial-..1-Linux.sh
CMakeFiles           CPackSourceConfig.cmake  Makefile              Tutorial-..1-Linux.tar.gz
cmake_install.cmake  CTestTestfile.cmake      Testing               Tutorial-..1-Linux.tar.Z
CPackConfig.cmake    DartConfiguration.tcl    Tutorial              TutorialConfig.h
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ ./Tutorial-..1-Linux.sh 
Tutorial Installer Version: ..1, Copyright (c) Humanity
This is a self-extracting archive.
The archive will be extracted to: /home/loon/work/cmake_test/Tutorial/build

If you want to stop extracting, please press <ctrl-C>.
版本归ZY所有


Do you accept the license? [yN]: 
y
By default the Tutorial will be installed in:
  "/home/loon/work/cmake_test/Tutorial/build/Tutorial-..1-Linux"
Do you want to include the subdirectory Tutorial-..1-Linux?
Saying no will install in: "/home/loon/work/cmake_test/Tutorial/build" [Yn]: 
y

Using target directory: /home/loon/work/cmake_test/Tutorial/build/Tutorial-..1-Linux
Extracting, please wait...

Unpacking finished successfully
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ ls
CMakeCache.txt       _CPack_Packages          install_manifest.txt  Tutorial-..1-Linux         TutorialConfig.h
CMakeFiles           CPackSourceConfig.cmake  Makefile              Tutorial-..1-Linux.sh
cmake_install.cmake  CTestTestfile.cmake      Testing               Tutorial-..1-Linux.tar.gz
CPackConfig.cmake    DartConfiguration.tcl    Tutorial              Tutorial-..1-Linux.tar.Z
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build$ cd Tutorial-..1-Linux/
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build/Tutorial-..1-Linux$ ls
bin  include
loon@loon-virtual-machine:~/work/cmake_test/Tutorial/build/Tutorial-..1-Linux$ tree .
.
├── bin
│   └── Tutorial
└── include
    └── TutorialConfig.h

2 directories, 2 files

三、最后

上面的License.txt就是你的安装许可证,我这里简单的写了几个字,对于开源软件的许可方式通常是GPL、Apache等,感兴趣的可以去GitHub等网站上下下来了解一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称系统有问题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值