打包
当想要把程序给他人使用时,需要用到打包功能,我们将构建一个安装包,在顶层CMakeLists末尾添加如下信息:
1 2 3 4 5
| 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)
|
include(InstallRequiredSystemLibraries)的作用是包含程序在当前系统用到的一些库
接下来是设置一些包的信息,比如LICENSE和版本号
include(CPack)就是引入打包功能
在构建完成后可以执行以下命令进行打包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ cpack CPack: Create package using STGZ CPack: Install projects CPack: - Run preinstall target for: tutorial CPack: - Install project: tutorial CPack: Create package CPack: - package: /home/carl/test/cmake/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/carl/test/cmake/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/carl/test/cmake/build/tutorial-..1-Linux.tar.Z generated.
|
如果需要指定压缩工具,可以使用-G选项
1 2 3 4 5 6 7
| $ cpack -G ZIP CPack: Create package using ZIP CPack: Install projects CPack: - Run preinstall target for: tutorial CPack: - Install project: tutorial CPack: Create package CPack: - package: /home/carl/test/cmake/build/tutorial-..1-Linux.zip generated.
|
如果想要包含源码需要如下配置:
1 2 3 4 5 6
| $ cpack -G ZIP --config CPackSourceConfig.cmake CPack: Create package using ZIP CPack: Install projects CPack: - Install directory: /home/carl/test/cmake CPack: Create package CPack: - package: /home/carl/test/cmake/build/tutorial-..1-Source.zip generated.
|
注意:在构建源码包时,如果构建目录在代码目录里,就如我一样,会将编译目录也打包进去,所以应该在代码目录之外建立编译目录,这是个坑,现在亲自踩了下
结语
CMake的基础教程到此就结束了,基本的编译和测试都已经介绍完成,官方文档的内容不止于此,其最后一章的打包调试和发布,也是挺有用的,后面用到再进行学习