¿Cómo construir el protobuf de Google en Windows usando MinGW?

Estoy usando Codeblocks como mi IDE con MingGW. Intento usar los búferes de protocolo de Google, pero estoy teniendo problemas para comstackr el protobuf.

El archivo readme para protobuf dice:

Si está utilizando Cygwin o MinGW, siga las instrucciones de instalación de Unix anteriores.

Las instrucciones de Unix dicen:

Para comstackr e instalar el tiempo de ejecución del búfer de protocolo de C ++ y el comstackdor de protocolo de búfer (protocolo) ejecute lo siguiente: $ ./configure $ make $ make check $ make install

No sé cómo realizar esto en Windows porque “configure” es un script de Unix y no sé cómo ejecutarlo, o el rest de los comandos.

¿Alguien puede explicar con más detalle cómo puedo construir protobuf usando MinGW en Windows?

Esto es lo que funcionó para mí:

  1. Necesita instalar MSYS con mingw. Este es un entorno de shell tipo Unix mínimo que le permite configurar / hacer la mayoría de los paquetes de Unix. Lea los documentos de mingw sobre cómo instalar eso (ya sea con mingw-get o el instalador de la GUI).

  2. Una vez que haya instalado MSYS, debe tener un acceso directo en su menú de inicio, llamado “MinGW Shell”. Eso abre una consola con un bash.

  3. Extraiga el tarball de la fuente a su directorio de inicio de MSYS. Tengo mingw instalado en “D: \ prog”, por lo que el directorio era “D: \ prog \ MinGW \ msys \ 1.0 \ home \ “. Puede decirle a su nombre de usuario MSYS desde el indicador del shell. Cuando termine, debería tener un directorio “D: \ prog \ MinGW \ msys \ 1.0 \ home \ \ protobuf-2.4.1″.

  4. En el indicador del shell, cambie al directorio protobuf:

    cd protobuf-2.4.1

  5. Ejecute el script de configuración (observe las comillas inversas):

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

    El parámetro --prefix se asegura de que protobuf esté instalado en el árbol del directorio mingw en lugar de los directorios MSYS, por lo que puedes construir fuera del shell MSYS (por ejemplo, con CodeBlocks …)

  6. Ejecutar marca:

    make

  7. Instalar:

    make install

  8. Eso es. Ahora debería poder comstackr su proyecto con protobuf.
    Deberias ser capaz de:

    • llame al protoc de su proyecto / makefiles
    • #include etc.
    • enlace con -lprotobuf o -lprotobuf-lite

HTH
Peter

Editar: Poniendo esto un poco más al día. Intenté configurar una nueva PC con las versiones actuales de MinGW y protobuf 2.5.0, y estos son los problemas que tuve:

  1. No hay un atajo “MinGW Shell” en el menú de inicio.
    Por alguna razón, las instalaciones MinGW actuales no pueden instalar eso.
    Pero hay un msys.bat en \msys\1.0 que abre una consola con un bash. Cree un acceso directo a ese archivo por lotes en algún lugar.

  2. gcc no funciona desde el shell MSYS.
    Tuve que ejecutar manualmente un archivo por lotes posterior a la instalación y responder a las preguntas allí. Esto configura las entradas fstab que montan los directorios mingw en el entorno MSYS.
    Necesita ejecutar \msys\1.0\postinstall\pi.bat

  3. Mi antivirus Avira interfirió con la comstackción de protobuf.
    Se quejó de que el protoc.exe generado sea un troyano “TR / Crypt.XPACK.Gen” y bloqueó el acceso a ese archivo, lo que resultó en una comstackción corrupta.
    Recibí mensajes de error que decían algo así como protoc:./.libs/lt-protoc.c:233: FATAL: couldn't find protoc. cuando bash iniciar el protocolo
    Tuve que inhabilitar el escáner Avira en tiempo real y make clean && make && make install again

Editar # 2:

Esta publicación ha envejecido bastante, y mingw ya no es igual a mingw. En esta época, preferiría recomendar MSYS2, que viene con un puerto del gestor de paquetes pacman de ArchLinux, una horquilla mingw reciente, que funciona mejor (c ++ 11 std :: thread support!) Para 32 y 64 bits, y un paquete protobuf que solo necesita instalar y ser bueno.

¡Ve aquí para descargar!

¡Espero que esto ayude!
Peter

En mi caso, la respuesta de Peter no funcionó por completo, utilicé la última distribución MinGW 4.8.1 + MSys (seleccionó los dos paquetes mingw-get en mingw-get ).

Mi problema era que el prefijo realmente no funcionaba, solo podía encontrar los archivos en C:\MinGW\msys\1.0\local . Sin embargo, después de copiar las carpetas bin / include / libs en c:\mingw, la instalación también me funcionó.

Tuve el mismo problema y lo resolví construyendo buffers de protocolo usando boost build. Eso funcionó bien, puedo proporcionar un archivo de interlocking para los búferes de protocolo.

Sin embargo, lo que todavía tengo problemas es extender la comstackción de refuerzo para que genere archivos fuente cpp a partir de archivos proto, pero esa es otra historia.