目录
前言
本文主要讲如何在Windows环境下使用CMake生成protobuf的库,并于VS2017中使用。安装protobuf有两种方式
- vspkg直接安装
- cmake编译生成protobuf库
vcpkg直接安装
protobuf
- 使用
vcpkg
安装protobuf和它的依赖>vcpkg install protobuf protobuf:x64-windows
- 如果想要zlib特性,还可以使用
>vcpkg install protobuf[zlib] protobuf[zlib]:x64-windows
protoc
下载地址:protoc-latest,下载protoc-$VERSION-win32.zip
cmake编译protobuf生成库
cmake编译安装protobuf官方教程,根据这个教程下来,就能成功编译。但我还是用中文再写一遍。
安装前的准备
CMake
:Windows下CMake安装教程,因为需要使用cmake生成Visual Studio的项目进行编译,当然用Mingw也可以,只是我是用的VS,cmake安装比较简单,直接下载安装添加cmake.exe
到环境变量Path中就行了下载Protobuf源码
:protocol-releases,下载最新的,我写文章时最新的是protobuf-cpp-3.15.6.zip
安装环境配置
- 在开始菜单中找到Visual Studio的工具集,教程里是
x86 Native Tools Command Prompt for VS 2019
。C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional>
- 切换到工作目录
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional>cd C:\Path\to C:\Path\to>
C:\Path\to
代表你的工作目录 - 创建一个目录用来放编译好的lib,exe和头文件
C:\Path\to>mkdir install
- 如果cmake用不了,记得添加
cmake.exe
的目录到Path
环境变量里C:\Path\to>set PATH=%PATH%;C:\Program Files (x86)\CMake\bin
获取源码
源码在准备阶段就下载了,解压后放到你的工作目录
- 进入
protobuf
的项目的cmake
目录C:\Path\to>cd protobuf\cmake C:\Path\to\protobuf\cmake>
- 我们执行影子构建(Shadow Building)来避免污染源码目录,创建一个
build
目录然后进入到该路径C:\Path\to\protobuf\cmake>mkdir build & cd build C:\Path\to\protobuf\cmake\build>
注意
:Makefile每次只能生成Debug或者Release版本的项目文件,因此想要生成多个版本的话,应该使用多个文件夹,并重复后面的步骤以生成多个版本。C:\Path\to\protobuf\cmake\build>mkdir release & cd release C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^ -DCMAKE_BUILD_TYPE=Release ^ -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../../../../install ^ ../..
^
:表示一个命令未结束时的换行-DCMAKE_BUILD_TYPE=Release
:表示生成Release
版本,生成Debug
则改为-DCMAKE_BUILD_TYPE=Debug
-Dprotobuf_BUILD_TESTS=OFF
:表示不生成单元测试部分的文件,需要生成则不加这条命令即可。
- 接下来创建解决方案目录
C:\Path\to\protobuf\cmake\build>mkdir solution & cd solution C:\Path\to\protobuf\cmake\build\solution>cmake -G "Visual Studio 16 2019" ^ -DCMAKE_INSTALL_PREFIX=../../../../install ^ ../..
Visual Studio 16 2019
:代表生成VS2019的项目,这个值可以通过cmake --help
查看,列出来的表示你机器上可以用的,标记*
的表示默认使用的配置Generators The following generators are available on this platform (* marks default): Visual Studio 16 2019 = Generates Visual Studio 2019 project files.