2012-02-11 13 views
20

Uso Codeblocks come IDE con MingGW. Sto tentando di utilizzare i buffer del protocollo google, ma sto riscontrando problemi nella creazione del protobuf.Come creare il protobuf di Google in Windows usando MinGW?

Il file readme per protobuf dice:

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

Le istruzioni 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

non so come eseguire queste in Windows perché "Configura" è uno script di Unix e Non so come eseguirlo, o il resto dei comandi.

Qualcuno può spiegare in modo più dettagliato come Posso creare protobuf utilizzando MinGW su Windows?

risposta

25

Ecco cosa ha funzionato per me:

  1. È necessario installare MSYS con MinGW. Questo è un ambiente shell unix minimale che consente di configurare/creare la maggior parte dei pacchetti unix. Leggi i documenti mingw su come installarlo (con Mingw-get o con il programma di installazione della GUI).

  2. Una volta installato MSYS, si dovrebbe avere un collegamento nel menu di avvio, denominato "MinGW Shell". Ciò apre una console con una bash.

  3. Estrarre il tarball di origine nella directory principale MSYS. Ho installato mingw in "D: \ prog", quindi la directory era "D: \ prog \ MinGW \ msys \ 1.0 \ home \ < nome utente >". Puoi indicare il tuo nome utente MSYS dal prompt della shell. Al termine, è necessario disporre di una directory "D: \ prog \ MinGW \ msys \ 1.0 \ home \ < nome utente > \ protobuf-2.4.1".

  4. Al prompt della shell, passare alla directory protobuf:

    cd protobuf-2.4.1

  5. Eseguire lo script di configurazione (notare le apici):

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

    Il --prefix paramater si assicura protobuf è installato nell'albero della directory mingw invece delle directory MSYS, quindi puoi costruire all'esterno della shell MSYS (es. wit h CodeBlocks ...)

  6. Run make:

    make

  7. Installare:

    make install

  8. questo è tutto. Ora dovresti essere in grado di compilare il tuo progetto con protobuf.
    Si dovrebbe essere in grado di:

    • chiamata protoc dal progetto/makefile
    • #include <google/protobuf/message.h> ecc
    • legame con -lprotobuf o -lprotobuf-lite

HTH
Peter

Modifica: Questo è un po 'più aggiornato. Ho provato ad installare un nuovo PC con le versioni attuali di MinGW e protobuf 2.5.0, e questi sono i problemi che ho avuto:

  1. non ci sono scorciatoie "MinGW Shell" nel menu di avvio.
    Per qualche motivo le attuali installazioni MinGW non riescono a installarlo.
    Ma c'è uno msys.bat in <Mingw home>\msys\1.0 che visualizza una console con una bash. Creare un collegamento a quel file batch da qualche parte.

  2. gcc non funziona dalla shell MSYS.
    Ho dovuto eseguire manualmente un file batch post-installazione e rispondere alle domande. Questo imposta le voci fstab che montano le directory mingw nell'ambiente MSYS.
    È necessario eseguire <Mingw home>\msys\1.0\postinstall\pi.bat

  3. Il mio antivirus Avira ha interferito con la compilazione di protobuf.
    Si è lamentato del fatto che il protoc.exe generato fosse un trojan "TR/Crypt.XPACK.Gen" e ha bloccato l'accesso a quel file, provocando una build corrotta.
    Ho ricevuto messaggi di errore che dicevano qualcosa come protoc:./.libs/lt-protoc.c:233: FATAL: couldn't find protoc. quando provavo ad avviare protoc.
    ho dovuto disattivare lo scanner in tempo reale Avira e make clean && make && make install nuovo

Edit # 2:

Questo post è di età compresa tra un po ', e MinGW non lo fa più uguale MinGW. In questo giorno preferisco raccomandare MSYS2 che viene fornito con una porta del pacman package manager di ArchLinux, una mingw fork recente e funzionante (C++ 11 std :: thread!) Per 32 e 64 bit, e un pacchetto protobuf che devi solo installare ed essere buono.

Go here da scaricare!

Spero che questo aiuti!
Peter

+0

Grazie per la risposta :) Farò un tentativo. – Alex

+0

Ok, l'ho fatto, e ha funzionato :), quindi ringrazio molto per la risposta. – Alex

+0

@Peter: ho provato a seguire i passaggi elencati. Quando eseguo il comando './configure' viene visualizzato l'errore seguente: controllo di come eseguire il preprocessore C++ .../lib/cpp configure: errore: il preprocessore C++ "/ lib/cpp" fallisce il controllo di integrità "Come risultato , nessuno dei make, fa funzionare i comandi di installazione. Ad esempio: make: *** Nessun target specificato e nessun makefile trovato. Stop. –

0

Ho avuto lo stesso problema e l'ho risolto costruendo buffer di protocollo usando boost build. Che ha funzionato bene, posso fornire un jamfile per i buffer del protocollo.

Ciò che ho ancora problemi è di estendere boost build in modo che generi file di origine cpp dai file di proto, ma questa è un'altra storia.

+2

Le versioni odierne della distribuzione di protobuf source (3.0.0-beta2) non hanno uno script ./configure e 'autoconf' fallisce; qualche possibilità di una risposta aggiornata? –

1

Nel mio caso la risposta di Peter non ha funzionato completamente, ho usato l'ultimo MinGW 4.8.1 + la distribuzione MSys (selezionato entrambi i pacchetti MSys in mingw-get).

Il mio problema era che il prefisso non funzionava davvero, ho trovato solo i file in C:\MinGW\msys\1.0\local. Tuttavia, dopo aver copiato le cartelle bin/include/libs su c:\mingw,, l'installazione ha funzionato anche per me.

Problemi correlati