在 Windows 上安装协议缓冲区
Posted
技术标签:
【中文标题】在 Windows 上安装协议缓冲区【英文标题】:Install Protocol Buffers on Windows 【发布时间】:2012-11-16 22:49:36 【问题描述】:我找不到在 Windows x64 平台上安装 Google Protocol Buffers(包括编译器)的明确说明。
我浏览了编译器和源代码的说明 README 文件:
对于编译器:要安装,只需将此二进制文件放在 PATH 中的某个位置
我将系统变量添加到路径:
PROTOC 'C:\dev_tools\protoc-2.4.1-win32'
我一直坚持使用 Cygwin 安装 Protocol Buffers 源。我试过以下 自述文件中提供的 Unix 说明:
构建和安装 C++ 协议缓冲区运行时和协议 缓冲区编译器(protoc)执行如下:
$ ./configure $ make $ make check $ make install
如果
make check
失败,你仍然可以安装,但很可能是 此库的某些功能将无法在您的系统上正常工作。 风险自负。
make install
可能需要超级用户权限。有关 configure 和 make 的高级使用信息,请参阅 INSTALL.txt。
** 安装位置提示**
默认情况下,软件包将安装到 /usr/local。但是,在许多平台上,/usr/local/lib 不是 LD_LIBRARY_PATH 的一部分。您可以添加它,但安装到 /usr> 可能更容易。为此,请按如下方式调用配置:
./configure --prefix=/usr
我明白了
-bash: ./configure: No such file or directory'
有人可以提供清晰详细的步骤来完成这项工作吗?
更新
我改用 MSYS/MINGW32 并且 我遵循了link 中给出的说明。现在我陷入了以下困境:
当我运行“./configure”命令时,出现以下错误:检查如何运行 C++ 预处理器... /lib/cpp 配置:错误:C++ 预处理器“/lib/cpp”未通过健全性检查'
因此,make、make install 命令都不起作用。例如:
make: No targets specified and no makefile found. Stop.
【问题讨论】:
令人惊讶的是文档在安装它时有多糟糕。真可怜。 2019 和谷歌在 windows 上设置协议缓冲区的文档仍然很糟糕。 2020 年,情况并没有太大变化。 明天快 2022 年了,也好不到哪里去 【参考方案1】:有一个完整的文档文件用于在 Windows 上编译 protobuf:
https://github.com/google/protobuf/blob/master/src/README.md#c-installation---windows https://github.com/google/protobuf/blob/master/cmake/README.md您需要 7-zip、Cmake 和 Visual Studio。
无论如何,使用持续集成工具(如 Travis 或 Appveyor)的一个意想不到的副作用是始终有一个最新且有效的构建脚本可用。我碰巧总是查看appveyor.yml
和travis_config.yml
文件,只要它们存在。
>>> git clone -b v3.1.0 https://github.com/google/protobuf.git
>>> cd protobuf
>>> curl -L -o release-1.7.0.zip https://github.com/google/googlemock/archive/release-1.7.0.zip
>>> 7z x release-1.7.0.zip
>>> del /Q release-1.7.0.zip
>>> rename googlemock-release-1.7.0 gmock
>>> curl -L -o release-1.7.0.zip "https://github.com/google/googletest/archive/release-1.7.0.zip"
>>> 7z x release-1.7.0.zip
>>> del /Q release-1.7.0.zip
>>> rename googletest-release-1.7.0 gtest
>>> move gtest gmock
>>> set generator=Visual Studio 12 Win64
>>> set vcplatform=x64
>>> mkdir build_msvc
>>> cd build_msvc
>>> cmake -G "%generator%" -Dprotobuf_BUILD_SHARED_LIBS=%BUILD_DLL% -Dprotobuf_UNICODE=%UNICODE% ../cmake
>>> msbuild protobuf.sln /p:Platform=%vcplatform% || goto error
您需要curl
(Git Bash
有)以及解析7z.exe
和Msbuild.exe
可执行文件的路径。
我成功地在装有 Visual Studio 2015 的 Windows 10 x64 机器上构建了 protobuf 编译器。
【讨论】:
它是否也适用于java
protobuf 编译器安装。看来您正在为安装c++
编译器提供解决方案
没有 java protobuf 编译器:编译器是 C++ 并且有嵌入结果运行时的 java 绑定。我没有测试 Java 绑定,因为我不擅长 Java 和 Maven【参考方案2】:
如果您只想编译 ProtoBuf 定义,可以直接在 ProtoBuf GitHub 发布页面下载precompiled binaries of protoc for all platforms。
他们至少从 2015 年开始就已经预编译了二进制文件,但在多次下载之间很容易忽略它们。
【讨论】:
>> 但在众多下载之间很容易忽略它们。是的! 非常感谢。好的!那真的是真的!他们走到了尽头! 如果我想拥有运行时库怎么办?我认为这不足以解决问题中的问题。 @Subin_Sebastian:然后下载其他软件包之一。都在那里。 预构建的二进制文件不适用于 C++。【参考方案3】:从
下载protoc-2.5.0-win32.ziphttps://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0
然后安装,只需将此二进制文件放在 PATH 中的某个位置
【讨论】:
请注意,二进制文件和其他文件位于默认情况下未展开的“资产”部分下。所以点击资产旁边的小向下箭头。【参考方案4】:我在 Windows 10 上构建 protobuf v2.4.1 如下:
git clone https://github.com/protocolbuffers/protobuf.git; cd protobuf; git checkout v2.4.1; cd vsprojects 在 Visual Studio 2019 中打开 protobuf.sln 按构建解决方案并出现许多错误:最小未定义和最大未定义 添加文件 protobuf/stubs/common.h 下一个代码:按构建解决方案并出现错误:致命错误 C1189:“#error: hash_map 已弃用,将被删除…….” 添加编译定义-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS解决问题 接下来我遇到了错误“error C2664: "std::pair std::make_pair(_Ty1 &&,_Ty2 &&) noexcept”...” 在文件 src\google\protobuf\compiler\command_line_interface.cc 中,我将字符串“proto_path_.push_back(make_pair(virtual_path, disk_path));”修改为“ proto_path_.push_back(make_pair(virtual_path, disk_path));”#if defined(_WIN32) && !defined(min) #define min(a,b) __min(a,b) #define max(a,b) __max(a,b) #endif
按构建解决方案。所有构建都成功。(测试项目在没有测试框架的情况下无法构建)
安装:
运行 extract_includes.bat 将所有公共头文件复制到单独的“include”目录(在***包目录下)。 将包含目录的内容复制到要放置标头的任何位置 将 protoc.exe 复制到您放置构建工具的任何位置 将 libprotobuf.lib、libprotobuf-lite.lib 和 libprotoc.lib 复制到您放置库的任何位置。【讨论】:
【参考方案5】:我建议在 Windows 上使用 vcpkg 工具。这是一步一步manual。
关于protobuf,首先检查你有哪些选项(在cmd中):
vcpkg 搜索 protobuf
接下来安装所需的包: vcpkg 安装 protobuf:x64-windows-static
注意冒号后面的x64-windows-static - 这是三元组。检查所有的 vcpkg 帮助三元组。
然后转到 your_path\vcpkg-master\packages\protobuf_x64-windows-static\
现在您可以设置环境变量了。
【讨论】:
您可以通过省略“-static”部分来安装库的静态和动态版本【参考方案6】:现在 protobuf 是 Visual Studio 中的 NuGet 包。去拿吧。
【讨论】:
使用 vcpk 安装给我这个错误Call Stack (most recent call first): scripts/cmake/vcpkg_configure_cmake.cmake:273 (vcpkg_execute_required_process) ports/protobuf/portfile.cmake:44 (vcpkg_configure_cmake) scripts/ports.cmake:71 (include) Error: Building package protobuf:x86-windows failed with: BUILD_FAILED
【参考方案7】:
我用chocolatey安装了它,效果很好。
choco --install -y protoc
【讨论】:
【参考方案8】:简单ref
choco install protoc --pre
【讨论】:
【参考方案9】:用于在 windows 中安装 proto buff
转到https://github.com/protocolbuffers/protobuf/releases
向下滚动并下载适用于 Windows 的 zip 文件
Binary File
下载 zip 后,解压到 C:/
只需复制路径, C:\protoc-3.17.3-win64\bin
并将其设置为环境变量的路径
path setup
希望,这会有所帮助!
【讨论】:
【参考方案10】:使用chocolatey
choco install protoc
【讨论】:
【参考方案11】:choco install protoc --pre 工作,确保您处于提升状态。
这是我从 gitbash 运行 protoc 时的输出
$ 协议 用法:C:\ProgramData\chocolatey\lib\protoc\tools\bin\protoc.exe [OPTION] PROTO_FILES 解析 PROTO_FILES 并根据给定的选项生成输出: -IPATH, --proto_path=PATH 指定要搜索的目录
将它添加到我的 $path 环境变量中并没有按预期工作。
【讨论】:
以上是关于在 Windows 上安装协议缓冲区的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 中使用 MinGW 的 Google 协议缓冲区
Windows 上的 Thrift / Google 协议缓冲区