windows下用CMake构建使用protobuf的应用,编译使用VS2022

最近构建一个使用protobuf的应用,踩了不少坑,在此记录一下

一、编译protobuf

protobuf只提供源码,没有编译好的库文件给使用造成一定的障碍(差评)。所以c++应用中使用protobuf的第一步是用cmake对protobuf进行构建。
1. 去github官方仓库release页面下载源码
我下载的版本是3.21.9
2. 用Cmake生成VS2022工程,我的配置如下:
在这里插入图片描述
3. 用VS2022进行编译,并安装生成的库
用ALL_BUILD项进行编译,用INSTALL项进行安装
在这里插入图片描述
安装的时候是在INSTALL项上右键,选择“仅用于项目”->“仅生成INSTALL”,之后会将protobuf的bin、include、lib复制到配置的库安装目录中。
在这里插入图片描述
到这一步,protobuf库就准备完毕了,要注意库的编译方式是Debug还是Release。如果是debug方式,生成的库名称叫libprotobufd.lib,对应的dll叫libprotobufd.dll。

二、使用CMake引入protobuf库

需要写CMakeLists.txt引入protobuf,最简单的配置如下:

cmake_minimum_required(VERSION 3.6...3.12 FATAL_ERROR)
project(backend)

# 设置protobuf的库目录
set(CMAKE_PREFIX_PATH "C:/workspace/protobuf")
find_package(Protobuf REQUIRED)
message(STATUS "Protobuf found: ${Protobuf_FOUND}")
message(STATUS "Protobuf version: ${Protobuf_VERSION}")
message(STATUS "Protobuf include dirs: ${Protobuf_INCLUDE_DIRS}")
message(STATUS "Protobuf libraries: ${Protobuf_LIBRARIES}")

# 设置protobuf包含目录
include_directories(${Protobuf_INCLUDE_DIRS})
# 需要定义预处理宏
ADD_DEFINITIONS(-D PROTOBUF_USE_DLLS)

# protobuf生成的c++源文件
aux_source_directory(./proto PROTO_SRCS)

add_executable(main main.cpp ${PROTO_SRCS})
# 链接protobuf
target_link_libraries(main ${Protobuf_LIBRARIES})

这里有几个巨坑的地方。

  1. find_package找protobuf库的时候必须写出Protobuf,而不是全部小写
  2. 需要定义预处理宏PROTOBUF_USE_DLLS,不然编译报错

不得不说,C++引入的三方库体验真是差的要死。像前端直接npm install搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值