目录
1. 概述
Zlib是一个数据压缩库,它提供了在内存中对数据进行压缩和解压缩的功能。这个库非常泛用,除了直接使用这个库之外,很多依赖库都会间接依赖它。这里就以Windows系统为例介绍一下如何通过CMake构建它。
2. 详论
2.1 设置构建目录
尽管CMake提供了GUI工具,但是不推荐通过GUI进行构建。原因很简单,有很多构建选项需要我们自己控制,一个个去配置是很容易忘记自己配置了哪些选项的,总不能把配置的截图保存下来吧?因此还是使用脚本比较合适。
在下载源代码之后,进入源代码目录,会有一个CMakeLists.txt文件,这个文件就是用于CMake构建的项目文件。在进行构建之前,需要设置一个单独的目录存放构建的中间文件和结果文件,方便与源代码分开。通常的做法是在这个跟目录中创建一个名为Build的目录。
2.2 配置构建
接下来,使用如下命令来配置构建项目:
# 配置CMake
cmake .. -G "$Generator" -A x64 -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="$InstallDir" -DZLIB_BUILD_EXAMPLES=OFF
..
表示项目的根目录是上一级目录。-G $Generator
的意思设置生成器,在Windows环境下一般使用MSVC进行构建,例如使用Visual Studio 2019进行构建,Generator就应该是”Visual Studio 16 2019″。-A x64
指定架构为64位。- 所有的构建配置项目以-D开头,CMAKE_CONFIGURATION_TYPES是一个CMake内置变量,用于控制可用的配置类型,这里使用的是RelWithDebInfo,也就是Release带调试信息的类型。
- CMAKE_INSTALL_PREFIX也是一个内置的CMake变量,用于设置项目安装的目录,如果不设置的话,Linux系统下默认会安装到”/usr/local”,Windows系统下会安装到”C:/Program Files/ “。
- ZLIB_BUILD_EXAMPLES内置一个项目提供的一个配置项,表示不用构建项目自带的案例程序。
越是大型项目,需要配置的构建项就越多。对于项目提供的配置项,可以在CMakeLists.txt中看到,例如:
option(ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" ON)
如果不会看这些也不要紧,可以打开CMake的GUI工具帮助我们辅助查看。在GUI工具中会列出所有的CMake变量和项目配置项:
2.3 构建项目
然后就是正式开始构建项目了:
# 构建阶段,指定构建类型
cmake --build . --config RelWithDebInfo
--build
表示构建项目。.
表示构建的结果放在当前目录。--config RelWithDebInfo
表示按照Release带调试信息的类型进行构建。
2.4 安装项目
最后是安装项目。有的读者包括笔者最开始会比较奇怪,dll也需要安装的吗?是的没错,需要安装,而且最好把所有依赖库安装到一个目录中,这样便于引用和管理。
# 安装阶段,指定构建类型和安装目标
cmake --build . --config RelWithDebInfo --target install
2.5 清理构建目录
另外还有个指令是清理构建生成的文件,不过使用的不是很多,手动删除也行:
# 清理构建目录
cmake --build . --target clean
3. 总结
以上大概就是构建一个C/C++依赖库项目的过程了,不止是zlib,其他库也可以按照这种方式进行构建,最大的区别就是不同的项目可能需要的配置项不同,读者需要灵活掌握。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容