如何使用MinGW在Windows中构建Google的protobuf?

时间:2012-02-11 20:33:01

标签: c++ mingw protocol-buffers

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

protobuf的自述文件说:

  

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

Unix指令说:

  

构建和安装C ++协议缓冲区运行时和协议   缓冲区编译器(protoc)执行以下操作: $ ./configure $ make $ make check $ make install

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

有人可以更详细地解释如何 我可以在Windows上使用MinGW构建protobuf吗?

3 个答案:

答案 0 :(得分:25)

这对我有用:

  1. 您需要使用mingw安装MSYS。这是一个类似于unix的最小shell环境,允许您配置/生成大多数unix包。阅读mingw文档,了解如何安装(使用mingw-get或GUI安装程序)。

  2. 安装完MSYS后,您应该在开始菜单中有一个名为“MinGW Shell”的快捷方式。这会打开一个带有bash的控制台。

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

  4. 在shell提示符下,切换到protobuf目录:

    cd protobuf-2.4.1

  5. 运行configure脚本(注意反引号):

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

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

  6. 运行make:

    make

  7. 安装:

    make install

  8. 就是这样。您现在应该能够使用protobuf编译您的项目 你应该能够:

    • 从您的项目/ makefile中调用protoc
    • #include <google/protobuf/message.h>等。
    • -lprotobuf-lprotobuf-lite
    • 相关联
  9. HTH
    彼得

    编辑: 让这更新一点。我尝试使用当前版本的MinGW和protobuf 2.5.0设置一台新PC,这些都是我遇到的问题:

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

    2. gcc在MSYS shell中不起作用 我必须手动运行安装后的批处理文件并回答那里的问题。这将设置在MSYS环境中挂载mingw目录的fstab条目 您需要运行<Mingw home>\msys\1.0\postinstall\pi.bat

    3. 我的Avira防病毒软件干扰了protobuf编译 它抱怨生成的protoc.exe是一个“TR / Crypt.XPACK.Gen”木马并阻止了对该文件的访问,导致构建损坏。
      在尝试启动protoc时,我收到类似protoc:./.libs/lt-protoc.c:233: FATAL: couldn't find protoc.之类的错误消息 我不得不禁用Avira实时扫描程序并再次make clean && make && make install

    4. 编辑#2:

      这篇文章已经老了很多,mingw不再等于mingw了。 在这个时代,我宁愿推荐MSYS2,它带有一个ArchLinux的pacman包管理器的端口,一个最新的,更好用的(c ++ 11 std :: thread support!)mingw fork for 32和64 bit,and一个protobuf包,你只需要安装并保持良好状态。

      Go here下载!

      希望这有帮助!
      彼得

答案 1 :(得分:1)

在我的情况下,Peter的答案没有完全奏效,我使用了最新的MinGW 4.8.1 + MSys发行版(在mingw-get中选择了两个MSys包)。

我的问题是前缀不起作用,我只能找到C:\MinGW\msys\1.0\local中的文件。但是,将bin / include / libs文件夹复制到c:\mingw,后,安装也适用于我。

答案 2 :(得分:0)

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

我仍然遇到的问题是扩展boost构建,以便从proto文件生成cpp源文件,但这是另一个故事。