C++ 如何构建谷歌&x27;在Windows中使用MinGW的s protobuf?

C++ 如何构建谷歌&x27;在Windows中使用MinGW的s protobuf?,c++,mingw,protocol-buffers,C++,Mingw,Protocol Buffers,我使用代码块作为我与MingGW的IDE。 我正在尝试使用谷歌协议缓冲区, 但是我在构建protobuf时遇到了麻烦 protobuf的自述文件说: 如果您使用的是Cygwin或MinGW, 按照上面的Unix安装说明进行操作 Unix说明中说: 构建和安装C++协议缓冲区运行时和协议 缓冲区编译器(protoc)执行以下操作: 美元/配置 $make 美元支票 $make安装 我不知道如何在Windows中执行这些操作 因为“configure”是一个Unix脚本 我不知道如何执行它,或者其他

我使用代码块作为我与MingGW的IDE。 我正在尝试使用谷歌协议缓冲区, 但是我在构建protobuf时遇到了麻烦

protobuf的自述文件说:

如果您使用的是Cygwin或MinGW, 按照上面的Unix安装说明进行操作

Unix说明中说:

构建和安装C++协议缓冲区运行时和协议 缓冲区编译器(protoc)执行以下操作:


美元/配置
$make
美元支票
$make安装

我不知道如何在Windows中执行这些操作 因为“configure”是一个Unix脚本 我不知道如何执行它,或者其他命令

有人能更详细地解释一下
我可以在Windows上使用MinGW构建protobuf?

以下是对我有效的方法:

  • 您需要使用mingw安装MSYS。这是一个最小的类unix shell环境,允许您配置/制作大多数unix软件包。阅读mingw文档,了解如何安装它(使用mingwget或GUI安装程序)

  • 一旦安装了MSYS,您应该在“开始”菜单中有一个名为“MinGW Shell”的快捷方式。用bash打开控制台

  • 将源tarball解压缩到MSYS主目录。我在“D:\prog”中安装了mingw,所以目录是“D:\prog\mingw\msys\1.0\home\”。您可以从shell提示符中得知您的MSYS用户名。完成后,您应该有一个目录“D:\prog\MinGW\msys\1.0\home\\protobuf-2.4.1”

  • 在shell提示下,更改为protobuf目录:

    cd协议-2.4.1

  • 运行配置脚本(注意反引号):

    /configure--prefix=`cd/mingw;pwd-W`

    --prefix
    参数确保protobuf安装在mingw目录树中,而不是安装在MSYS目录中,因此您可以在MSYS外壳外部构建(例如,使用代码块…)

  • 运行品牌:

    make

  • 安装:

    make-install

  • 就这样。您现在应该可以使用protobuf编译项目了。
    您应该能够:

    • 从项目/makefile调用
      protoc
    • #包括
    • 链接到
      -lprotobuf
      -lprotobuf-lite
  • HTH
    彼得

    编辑: 让这更符合时宜。我尝试用当前版本的MinGW和protobuf 2.5.0安装一台新电脑,我遇到了以下问题:

  • “开始”菜单中没有“MinGW Shell”快捷方式。
    由于某些原因,当前的MinGW安装无法安装该功能。
    但是在
    \msys\1.0
    中有一个
    msys.bat
    ,它会打开一个带有bash的控制台。在某处创建该批处理文件的快捷方式

  • gcc不能从MSYS外壳工作。
    我必须手动运行一个安装后批处理文件,并在那里回答问题。这将设置在MSYS环境中装载mingw目录的fstab项。
    您需要运行
    \msys\1.0\postinstall\pi.bat

  • 我的Avira antivirus干扰了protobuf编译。
    它抱怨生成的protoc.exe是一个“TR/Crypt.XPACK.Gen”特洛伊木马程序,并阻止了对该文件的访问,导致版本损坏。
    我收到一些错误消息,如
    protoc:./.libs/lt protoc.c:233:FATAL:在尝试启动protoc时找不到protoc.

    我不得不禁用Avira实时扫描仪并再次
    makeclean&&make&&makeinstall

  • 编辑#2:

    这篇文章已经有点过时了,mingw不再等于mingw了。 在这个时代,我更愿意推荐MSYS2,它带有ArchLinux的pacman软件包管理器的一个端口,一个用于32位和64位的最新更好的(c++11 std::thread support!)mingw fork,以及一个protobuf软件包,您只需要安装它就可以了

    下载

    希望这有帮助

    Peter

    我也遇到了同样的问题,我通过使用boost build构建协议缓冲区解决了这个问题。 这很好,我可以为协议缓冲区提供一个jamfile


    但我仍然有问题的是扩展boost build,以便它从proto文件生成cpp源文件,但这是另一回事

    在我的例子中,Peter的答案并不完全有效,我使用了最新的MingW4.8.1+MSys发行版(在
    MingWget
    中选择了两个MSys软件包)


    我的问题是前缀没有真正起作用,我只能在
    C:\MinGW\msys\1.0\local
    中找到文件。但是,在将bin/include/libs文件夹复制到
    c:\mingw之后,
    安装对我也起了作用。

    Thanx的答案:)我会尝试一下。好的,我做了,它起了作用:),所以Thanx的答案很多。@Peter:我试着按照你列出的步骤来做。当我运行'//Opg'命令时,我会发现以下错误:检查如何运行C++预处理器…LIb/CPP配置:错误:C++预处理器“/LIB/CPP”失败了检查,结果,make、make安装命令都不工作。例如:make:**未指定目标,也未找到makefile。停止。使用MinGW我遇到了这个问题:tar:“存档值84224超出uid范围0..65535”。事实证明cygwin支持更大的uid。如果您发现此问题,请安装cygwin并重复上述说明。哇。永远不要从Linux回到Windows。Windows真是一团糟。当前版本的protobuf源代码分发版(3.0.0-beta2)没有./configure脚本,并且
    autoconf
    失败;有没有可能得到最新的答案?