当前位置: 首页 > news >正文

Windows系统CMake+VS编译protobuf

目录

  • 一些名词
  • CMake构建VS工程
    • 下载protobuf源码
    • 下载CMake
    • 编译
    • QT中使用
  • 方案二失败:CMake+QT自带的Mingw编译
  • 参考链接

一些名词

lib
dll

lib库实际上分为两种,一种是静态链接lib库或者叫做静态lib库,另一种叫做动态链接库dll库的lib导入库或称为lib导入库。

x86
x64

x86 一般指 32 位的架构,x64指64位架构。

make
cmake
qmake

make工具,通过调用makefile文件中用户指定的命令来进行编译和链接。
cmake工具,cmake就可以更加简单的生成makefile文件给make。
qmake工具是Qt公司制造出来,用来生成Qt 专用makefile文件。

CMake构建VS工程

下载protobuf源码

https://github.com/protocolbuffers/protobuf
https://github.com/protocolbuffers/protobuf/releases
下载了protobuf-csharp-3.10.0.tar.gz
在这里插入图片描述
在这里插入图片描述

解压

下载CMake

本文选择最新版本的 3.28.0-rc4
打开CMake GUI
选择Browse Source为protobuf-3.10.0/cmake文件夹。
任意位置新建一个build文件夹,Browse Build选择构建输出的文件夹。

在这里插入图片描述

在这里插入图片描述

CMake界面运行configure

需要先设置使用的project
在这里插入图片描述
我选择了x64,根据自己的项目需求,选择x64 Win32 ARM之一

protobuf_BUILD_SHARED_LIBS:需选中该选项,则可编译动态链接库
protobuf_WITH_ZLIB:取消选中该选项
中间出错,取消选中ZLIB后正常。

CMake界面运行generate
img
<CMake Deprecation Warning at CMakeLists.txt:2 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.
这是一个Warning,由于文件中没有限制CMake版本限制,不管也可以运行。

在这里插入图片描述
运行后,build中出现了工程文件

编译

打开protobuf.sln文件
上方选择x64 Release
在这里插入图片描述

在这里插入图片描述
右键,重新生成解决方案
等待时间

在Release文件夹生成了
在这里插入图片描述
也可以生成x64 Debug的
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

QT中使用

Release版本在QT使用方法
在这里插入图片描述
在这里插入图片描述
pro文件中加入这些
项目运行环境为 64bit Release

将dll文件拷贝至项目路径的Release文件夹下,可以正常运行。
代码可参考
史上最详细:Qt–编译配置Protobuf(windows10)

方案二失败:CMake+QT自带的Mingw编译

CMake config选择mingw makefile

参考链接

方案一
史上最详细:Qt–编译配置Protobuf(windows10)

windows下CMake编译Protobuf

在 VS2019 中编译/使用 Protobuf
(取消选中zlib很重要。生成没有参考教程,而是选择资源管理器生成)

方案二:失败
Windows下Qt+minGW+CMake+opencv配置–方法总结、文件分享与排错分享
使用MinGW
QT中如何使用protobuf,配图详解
MinGW
cmake配置Qt的protobuf环境时出现Error in configuration process, project files may be invalid解决办法

MinGW-w64 C/C++编译器下载和安装
(未参考,直接使用QT带的)

http://www.lryc.cn/news/231502.html

相关文章:

  • HarmonyOS开发(三):ArkTS基础
  • Java排序算法之堆排序
  • 『GitHub项目圈选02』一款可实现视频自动翻译配音为其他语言的开源项目
  • Unity - Cinemachine
  • 准备搞OpenStack了,先装一台最新的Ubuntu 23.10
  • Android 12 客制化修改初探-Launcher/Settings/Bootanimation
  • 【JavaEE初阶】 HTML基础详解
  • C# Socket通信从入门到精通(10)——如何检测两台电脑之间的网络是否通畅
  • python科研绘图:P-P图与Q-Q图
  • 浅尝:iOS的CoreGraphics和Flutter的Canvas
  • 网络安全黑客技术自学
  • 【文件读取/包含】任意文件读取漏洞 afr_3
  • 第四章:单例模式与final
  • 深入Android S(12.0) 探索 Android Framework 之 SystemServer 进程启动详解
  • 搜维尔科技:【软件篇】TechViz是一款专为工程设计的专业级3D可视化软件
  • android Handler
  • 【Ubuntu·系统·的Linux环境变量配置方法最全】
  • Django之模板层
  • 社区论坛小程序系统源码+自定义设置+活动奖励 自带流量主 带完整的搭建教程
  • 2023亚太杯数学建模C题思路解析
  • acme在同一台服务器上设置多个Ali_key实现自动ssl申请和续期
  • 乐观锁与悲观锁
  • 【算法】堆排序
  • 51单片机应用从零开始(三)
  • 如何在 Nginx Proxy Manager(NPM)上部署静态网站
  • http的几种方法
  • var、let、const关键字的特性,以及let、const暂时性死区的作用
  • IDEA 高分辨率卡顿优化
  • 【AIGC】一起学习prompt提示词(4/4)【经典】【15种提示词技巧】
  • Linux实战一天一个小指令--《文件管理/文件查找》