2012-02-11 14 views
20

Estoy usando Codeblocks como mi IDE con MingGW. Estoy tratando de usar memorias intermedias de protocolo de Google, pero estoy teniendo problemas para compilar el protobuf.¿Cómo construir el protobuf de Google en Windows usando MinGW?

El archivo readme para protobuf dice:

If you are using Cygwin or MinGW, follow the Unix installation instructions, above.

Las instrucciones Unix dice:

To build and install the C++ Protocol Buffer runtime and the Protocol Buffer compiler (protoc) execute the following: $ ./configure $ make $ make check $ make install

No sé cómo realizar estas en Windows porque "configure" es una secuencia de comandos de Unix y No sé cómo ejecutarlo, o el resto de los comandos.

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

Respuesta

25

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 el menú de inicio, llamado "MinGW Shell". Eso abre una consola con un bash.

  3. Extraiga la fuente tarball a su directorio personal MSYS. Tengo mingw instalado en "D: \ prog", por lo que el directorio era "D: \ prog \ MinGW \ msys \ 1.0 \ home \ < nombre de usuario >". Puede decirle a su nombre de usuario MSYS desde el indicador del shell. Cuando haya terminado, debe tener un directorio "D: \ prog \ MinGW \ msys \ 1.0 \ home \ < nombre de usuario > \ protobuf-2.4.1".

  4. En el intérprete de comandos, cambie al directorio protobuf:

    cd protobuf-2.4.1

  5. Ejecutar el script de configuración (tenga en cuenta los acentos graves):

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

    El parámetro de --prefix se asegura protobuf está instalado en el árbol de directorios mingw en lugar de los directorios MSYS, por lo que puede construir fuera del shell MSYS (p. ej. h CodeBlocks ...)

  6. ejecutar make:

    make

  7. instalar:

    make install

  8. eso es todo. Ahora debería poder compilar su proyecto con protobuf.
    Usted debe ser capaz de:

    • protoc llamada de sus proyectos/archivos make
    • #include <google/protobuf/message.h> etc.
    • vínculo con -lprotobuf o -lprotobuf-lite

HTH
Peter

Edit: Llevando esto un poco más al día. Probé la creación de un nuevo PC con las versiones actuales de MinGW y protobuf 2.5.0, y estos son los problemas que tuve:

  1. no hay ningún 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 <Mingw home>\msys\1.0 que muestra 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 las preguntas allí. Esto configura las entradas fstab que montan los directorios mingw en el entorno MSYS.
    necesita ejecutar <Mingw home>\msys\1.0\postinstall\pi.bat

  3. Mi antivirus Avira interfirió con la compilación protobuf.
    Se quejó de que el protoc.exe generado era un troyano "TR/Crypt.XPACK.Gen" y bloqueó el acceso a ese archivo, lo que resultó en una compilación dañada.
    Recibí mensajes de error que decían algo así como protoc:./.libs/lt-protoc.c:233: FATAL: couldn't find protoc. al intentar iniciar el protocolo.
    tuve que desactivar el escáner en tiempo real Avira y make clean && make && make install nuevo

Edición # 2:

Este post ha envejecido un poco, y MinGW no es igual a MinGW más. En este día y edad, prefiero recomendar MSYS2 que viene con un puerto del administrador de paquetes pacman de ArchLinux, una horquilla mingw reciente, que funciona mejor (C++ 11 std :: thread!) Para 32 y 64 bits, y un paquete protobuf que solo necesita instalar y ser bueno.

Go here para descargar!

Espero que esto ayude!
Peter

+0

Gracias por la respuesta :) Lo intentaré. – Alex

+0

Ok, lo hice, y funcionó :), así que muchas gracias por la respuesta. – Alex

+0

@ Peter: Intenté seguir los pasos que enumeró. Cuando ejecuto el comando './configure' obtengo el siguiente error: comprobando cómo ejecutar el preprocesador de C++ .../lib/cpp configure: error: el preprocesador de C++ "/ lib/cpp" falla la comprobación de cordura 'Como resultado , ninguno de los comandos make, make install funciona. Por ejemplo: make: *** No se especificaron objetivos y no se encontró ningún archivo MAKE. Detener. –

0

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

Lo que todavía tengo problemas es ampliar la compilación de refuerzo para que genere archivos fuente cpp a partir de archivos proto, pero esa es otra historia.

+2

Las versiones actuales de la distribución fuente protobuf (3.0.0-beta2) no tienen una secuencia de comandos ./configure, y 'autoconf' falla; ¿hay alguna posibilidad de una respuesta actualizada? –

1

En mi caso, la respuesta de Peter no funcionó por completo, utilicé la última versión de MinGW 4.8.1 + la distribución MSys (seleccionados ambos paquetes MSys 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 al c:\mingw,, la instalación también me funcionó.

Cuestiones relacionadas