假设我们的工程已经完工,可以发布给其他人使用了 。我们需要分发各种平台上的二进制文件。这和我们之前第五讲的内容不同,当时的安装是直接从源码构建的。在这一讲里,我们将创建一个安装包,它支持二进制安装及软件包管理功能。为此,我们会用到CPack来创建平台特定的安装包。具体地说,我们只需要在顶层CMakeLists.txt的末尾添加几行代码。
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}")
set(CPACK_SOURCE_GENERATOR "TGZ")
include(CPack)
这就是全部内容,简单不?首先,我们引用 InstallRequiredSystemLibraries。这个模块将会引用工程在当前平台所需要的所有运行时库。接下来,设置一些CPack变量,它们存储了工程的版权和版本信息。版本号源自之前讲述的内容。版本文件License.txt已经在本讲的源码包里了。最后, CPACK_SOURCE_GENERATOR 变量选择了打包文件的格式。
最后我们引用CPack module 模块,它将会使用之前设定的变量,还有当前系统的一些其它属性来设置安装包。
接下来,和往常一样构建工程,并执行 cpack 来构建安装包:
cpack
要指定生成器,使用-G 选项。对于配置构建,用 -C 选项来指定配置。比如:
cpack -G ZIP -C Debug
如果需要查看可用生成器列表,可以参考 cpack-generators(7) 或执行命令 cpack --help。像ZIP这样的归档生成器会归档压缩所有需要安装的文件。
如果要归档完成的资源树,你需要执行命令:
cpack --config CPackSourceConfig.cmake
或者,可以运行 make package
命令,或从IDE上选择Package
目标,并构建工程。
最后,安装得到的安装包,并验证安装的软件是否工作正常。