web-dev-qa-db-ja.com

MinGWを使用してWindowsでGoogleのprotobufを構築する方法は?

MingGWでIDEとしてコードブロックを使用しています。Googleプロトコルバッファを使用しようとしていますが、protobufの構築に問題があります。

Protobufのreadmeファイルには次のように書かれています。

CygwinまたはMinGWを使用している場合は、上記のUnixインストール手順に従ってください。

Unixの説明によると:

C++ ProtocolBufferランタイムとProtocolBufferコンパイラ(protoc)をビルドしてインストールするには、次のコマンドを実行します。$ ./configure $ make $ make check $ make install

「configure」はUnixスクリプトであり、実行方法やその他のコマンドがわからないため、Windowsでこれらを実行する方法がわかりません。

WindowsでMinGWを使用してprotobufを構築する方法を誰かがより詳細に説明できますか?

22
Alex

これが私のために働いたものです:

  1. Mingwを使用してMSYSをインストールする必要があります。これは、ほとんどのunixパッケージを構成/作成できる最小限のunixライクなシェル環境です。それをインストールする方法については、mingwのドキュメントを読んでください(mingw-getまたはGUIインストーラーのいずれかを使用)。

  2. MSYSをインストールすると、スタートメニューに「MinGWシェル」という名前のショートカットが表示されます。これにより、bashでコンソールが開きます。

  3. ソースtarballをMSYSホームディレクトリに抽出します。 「D:\ prog」にmingwをインストールしたので、ディレクトリは「D:\ prog\MinGW\msys\1.0\home\<username>」でした。 MSYSのユーザー名は、シェルプロンプトから確認できます。完了すると、ディレクトリ「D:\ prog\MinGW\msys\1.0\home\<username>\protobuf-2.4.1」が作成されます。

  4. シェルプロンプトで、protobufディレクトリに移動します。

    cd protobuf-2.4.1

  5. Configureスクリプトを実行します(バッククォートに注意してください)。

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

    --prefixパラメータは、protobufがMSYSディレクトリではなくmingwディレクトリツリーにインストールされていることを確認するため、MSYSシェルの外部でビルドできます(CodeBlocksなどを使用)。

  6. Makeを実行します。

    make

  7. インストール:

    make install

  8. それでおしまい。これで、protobufを使用してプロジェクトをコンパイルできるようになります。
    次のことができるはずです:

    • プロジェクト/メイクファイルからprotocを呼び出します
    • #include <google/protobuf/message.h>など。
    • -lprotobufまたは-lprotobuf-liteとリンクします

HTH
ピーター

編集:これをもう少し最新のものにします。 MinGWとprotobuf2.5.0の現在のバージョンで新しいPCをセットアップしようとしましたが、次のような問題がありました。

  1. スタートメニューに「MinGWシェル」ショートカットはありません。
    何らかの理由で、現在のMinGWインストールはそれをインストールできません。
    しかし、msys.batには<Mingw home>\msys\1.0があり、bash付きのコンソールが表示されます。そのバッチファイルへのショートカットをどこかに作成します。

  2. gccはMSYSシェルからは機能しません。
    インストール後のバッチファイルを手動で実行し、そこで質問に答える必要がありました。これにより、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を再度無効にする必要がありました

編集#2:

この投稿はかなり古くなり、mingwはmingwと同じではなくなりました。この時代では、ArchLinuxのpacmanパッケージマネージャーのポートが付属するMSYS2、最近のより機能的な(c ++ 11 std :: threadサポート!)32ビットと64ビットの両方のmingwフォーク、およびインストールするだけで良いprotobufパッケージ。

ここに行く ダウンロードする!

お役に立てれば!
ピーター

26
Peter Remmers

私の場合、Peterの答えは完全には機能しませんでした。私は、最新のMinGW 4.8.1 + MSysディストリビューションを使用しました(mingw-getで両方のMSysパッケージを選択しました)。

私の問題は、プレフィックスが実際には機能せず、C:\MinGW\msys\1.0\local内のファイルしか見つからなかったことでした。ただし、bin/include/libsフォルダーをc:\mingw,にコピーした後、インストールも機能しました。

1
FourtyTwo

同じ問題があり、ブーストビルドを使用してプロトコルバッファをビルドすることで解決しました。それはうまくいきました、私はプロトコルバッファのためにjamfileを提供することができます。

私がまだ問題を抱えているのは、ブーストビルドを拡張して、プロトファイルからcppソースファイルを生成することですが、それは別の話です。

0
Jan Rosendahl