【cmake系列使用教程】
这个系列的文章翻译自官方cmake教程:cmake tutorial。
示例程序地址:github.com/rangaofei/t…
不会仅仅停留在官方教程。本人作为一个安卓开发者,实在是没有linux c程序开发经验,望大佬们海涵。教程是在macos下完成,大部分linux我也测试过,有特殊说明的我会标注出来。本教程基于cmake-3.10.2,同时认为你已经安装好cmake。
假如想将我们的项目分发给其他人,以便他们可以安装并使用它。我们希望在各种平台上提供可执行文件或者源文件,构建支持二进制安装和包管理特性的安装包,如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模块,它将使用刚才定义的变量变量和系统的一些其他属性来设置安装程序。 我们执行外部构建并查看生成的文件都有什么:
~/Desktop/Tutorial/Step6/build/ tree -L 1
.
├── CMakeCache.txt
├── CMakeFiles
├── CPackConfig.cmake
├── CPackSourceConfig.cmake
├── CTestTestfile.cmake
├── Makefile
├── MathFunctions
├── TutorialConfig.h
└── cmake_install.cmake
注意其中两个生成的文件CPackConfig.cmake
,CPackSourceConfig.cmake
,一会又大用处。
下一步是按照一般的方式构建项目,然后在其上运行CPack。要构建一个二进制版本,可以运行:
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: /Users/saka/Desktop/Tutorial/Step6/build/Tutorial-1.0.1-Darwin.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: /Users/saka/Desktop/Tutorial/Step6/build/Tutorial-1.0.1-Darwin.tar.gz generated.
从日志可以看到生成了两个打包的文件Tutorial-1.0.1-Darwin.sh
,Tutorial-1.0.1-Darwin.tar.gz
。查看一下目录:
~/Desktop/Tutorial/Step6/build/ tree -L 1
.
├── CMakeCache.txt
├── CMakeFiles
├── CPackConfig.cmake
├── CPackSourceConfig.cmake
├── CTestTestfile.cmake
├── Makefile
├── MathFunctions
├── Tutorial
├── Tutorial-1.0.1-Darwin.sh
├── Tutorial-1.0.1-Darwin.tar.gz
├── TutorialConfig.h
├── _CPack_Packages
├── cmake_install.cmake
└── install_manifest.txt
查看一下压缩包内的文件:
~/Desktop/Tutorial/Step6/build/ tar -tf Tutorial-1.0.1-Darwin.tar.gz
Tutorial-1.0.1-Darwin/bin/
Tutorial-1.0.1-Darwin/bin/Tutorial
Tutorial-1.0.1-Darwin/bin/libMathFunctions.a
Tutorial-1.0.1-Darwin/include/
Tutorial-1.0.1-Darwin/include/MathFunctions.h
Tutorial-1.0.1-Darwin/include/TutorialConfig.h
这个是已经编译好的问答压缩而成的,解压后可以直接运行。
要构建一个源代码版本,可以运行:
cpack --config CPackSourceConfig.cmake
日志输出基本同上,只是包内的文件不一样:
~/Desktop/Tutorial/Step6/build/ tar -tf Tutorial-1.0.1-Source.tar.gz
Tutorial-1.0.1-Source/CMakeLists.txt
Tutorial-1.0.1-Source/TutorialConfig.h.in
Tutorial-1.0.1-Source/tutorial.cxx
Tutorial-1.0.1-Source/MathFunctions/
Tutorial-1.0.1-Source/MathFunctions/MakeTable.cxx
Tutorial-1.0.1-Source/MathFunctions/mysqrt.cxx
Tutorial-1.0.1-Source/MathFunctions/CMakeLists.txt
...
当然我们也可以自己编写这两个文件定制我们生成文件的规则,不过我估计只有闲的蛋疼的人才会自己编写者两个东西。
基本的使用教程已完毕,就是这么官方,就是这么坑爹。没有讲如何加入忽略打包的文件,没有讲解如何定制打包生成的文件名称,没有讲解如何制定打包生成的压缩包的位置,没有讲解生成压缩包的类型如何指定。就是这么官方,就是这么坑爹。后边教程我来填一些坑。
今天的文章cmake使用教程(五)-cpack生成安装包分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/16370.html