Win下生成Protobuf库文件,解决 ZLIB缺失问题,亲测!!
本案例使用Protobuf版本为 3.9.x,此版本的CMakeLists.txt可以正常通过Cmake编译;
(由于最新的Protobuf版本的 CmakeLists.txt 编译过程有许多报错,所以使用了历史版本。)
准备环境
- Protobuf源代码 https://github.com/protocolbuffers/protobuf
- Cmake工具 https://cmake.org/download/
- visaul studio 2022 版本不限,本人使用为2022
便捷
如果没有魔法这提供了已经编译好的库文件连接和Protobuf3.9.x源码;
源码:protobuf-3.9.x.zip
链接:https://pan.baidu.com/s/1UC9zZWG74kStDpAtxnT6Bg?pwd=7mo1
提取码:7mo1
编译后库文件:Release.7z
链接:https://pan.baidu.com/s/1SfzupIIFTtUmkT0RWnPG6g?pwd=elj9
提取码:elj9
开始处理
- 将GitHub下载的源码进行解压,在protobuf-3.9.x下创建一个新的文件夹build_dir(用于存放Cmake编译后的文件,文件夹名字自定义即可);
- 使用Cmake进行编译;
- 进行基础的编译选择
- 进行Configure配置
- 进行基础的编译选择
出现报错!!!
具体报错原因:缺少 ZLIB;
缺少 ZLIB 解决方式
注意:在生成ZLIB时候,可能会出现报错
MSB3073 解决方案
本人亲测成功:第一种方法:启动VS以管理员身份运行 + 第二种方法:build目录 放在 Cmakelist.txt 目录外侧;
按照步骤将 ZLIB 安装成功后,删除 build_dir 文件夹中内容,重新启动cmake进行编译;
现在zlib 已经存在了;
注意:其他版本的可能会出现 tests.cmake 文件缺失,可以将Cmakelist.txt 中 一下代码进行删除
enable_testing()
include(tests.cmake)
endif (protobuf_BUILD_TESTS)
去除后,重新点击 Configure 按钮 再点击 Generate 重新编译;
注意:不管是否有报错,最后一步都要点击 Generate!!! 才能生成 .sln 文件
Visaul Studio 操作
在之前创建的 build_dir 文件夹中会有编译产生的文件,双击 protobuf.sln 文件,使用 Visaul Studio 打开;
将项目配置选为 Release x64;
选择 libprotobuf、libprotoc、protoc 进行 生成选定内容;
在 build_dir 文件夹中会生成 Release 文件夹,得到结果;
生成include文件
在build_dir 文件夹下存在extract_includes.bat 脚本,双击执行;生成 include 文件;
本人并未解决 tests.cmake 报错问题!如有大佬希望指定一二;