title: protobuf编译配置
date: 2024-07-27 16:00:00
categories:
- other
- 工具安装
tags: MS
Protobuf
下载
官方下载地址
版本没必要最新,
注意
自22.0版本开始,有重大改变,CMakelist移至根目录而不是cmake文件夹,
第三方库文件夹third_party下面的子目录都为空,意味着需要手动配置(稍后)。
编译
编译准备
需要工具:CMake,visual studio。
当前路径,protobuf下载在D:\cppsoft
并解压在 protobuf-25.4
中,要在windows上生成protobuf的库,需要用到cmake,任意位置新建一个库文件生成的目录。
我的:D:\cppsoft\protobuf-25.4\test
打开CMake-GUI,选择
-
source code:CMakelist.txt所在的目录,也就是protobuf的根目录(22.0之前的版本选择cmake文件夹下)
-
build the binaries:刚才新建的位置
点击configure选择对应的配置然后Finish。
- 如果发现报错Error in configuration process,project files may be invalid,确保选择的目录下有cmakelist文件,
- 查看最下面错误信息,如果是22.0以上版本报错信息会提示googletest或是abseil相关的问题,原因就是之前说的第三方库下没有依赖文件,所以去配置。
位置:/third_party
此处右键终端中运行
git clone https://github.com/google/googletest.git
git clone https://github.com/abseil/abseil-cpp.git
# clone失败考虑更换ssh方式再试试
就会将相应文件下载到对应目录中,再回到cmake中重新configure,发现错误解决。
然后根据需要选择选项,完成后generate,去生成的文件夹点击sln文件打开vs项目。
需要注意选项CMAKE_INSTALL_PREFIX为最后项目生成库文件的目录,自定义。还有一个选项如图,
如果勾选,那么vs中打开时这里会是MT,未勾选应该是MD,(d表示debug)
开始编译
编译之前配置protoc环境变量,详见百度。
cmake输出目录中双击sln文件,使用vs打开,选择对应编译版本,debug/release,x32/x64,然后开始编译,根据需要生成一些文件或者直接全部生成-生成解决方案,生成需要一些时间,生成后去到这个项目目录(还是这个sln目录),右键终端,执行
cmake --install .
(可能的问题以及瞎摸索的解决方案:对应debug还是release,如果发现生成版本有问题,没有生效,可以在文件cmake_install.cmake文件中找到如图,修改为对应版本即可)
VS中项目配置
执行完后可以在之前的CMAKE_INSTALL_PREFIX选项指定的目录中查看文件
根据这个规则在vs中实际需要protobuf的项目中配置项目属性。需要配置的有:
- 属性->C/C+±>代码生成->运行库 设置/MT,/MTd或/MD,MDd,需要对应
- debug的protobuf对应debug的项目,release对应release
- 配置包含目录include和库目录bin(可能需要lib,这里我两个都配了,因为报错)
- 配置链接器附加依赖项,添加可能用到的库文件,缺啥补啥。