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を構築する方法を誰かがより詳細に説明できますか?
これが私のために働いたものです:
Mingwを使用してMSYSをインストールする必要があります。これは、ほとんどのunixパッケージを構成/作成できる最小限のunixライクなシェル環境です。それをインストールする方法については、mingwのドキュメントを読んでください(mingw-getまたはGUIインストーラーのいずれかを使用)。
MSYSをインストールすると、スタートメニューに「MinGWシェル」という名前のショートカットが表示されます。これにより、bashでコンソールが開きます。
ソース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」が作成されます。
シェルプロンプトで、protobufディレクトリに移動します。
cd protobuf-2.4.1
Configureスクリプトを実行します(バッククォートに注意してください)。
./configure --prefix=`cd /mingw; pwd -W`
--prefix
パラメータは、protobufがMSYSディレクトリではなくmingwディレクトリツリーにインストールされていることを確認するため、MSYSシェルの外部でビルドできます(CodeBlocksなどを使用)。
Makeを実行します。
make
インストール:
make install
それでおしまい。これで、protobufを使用してプロジェクトをコンパイルできるようになります。
次のことができるはずです:
protoc
を呼び出します#include <google/protobuf/message.h>
など。-lprotobuf
または-lprotobuf-lite
とリンクしますHTH
ピーター
編集:これをもう少し最新のものにします。 MinGWとprotobuf2.5.0の現在のバージョンで新しいPCをセットアップしようとしましたが、次のような問題がありました。
スタートメニューに「MinGWシェル」ショートカットはありません。
何らかの理由で、現在のMinGWインストールはそれをインストールできません。
しかし、msys.bat
には<Mingw home>\msys\1.0
があり、bash付きのコンソールが表示されます。そのバッチファイルへのショートカットをどこかに作成します。
gccはMSYSシェルからは機能しません。
インストール後のバッチファイルを手動で実行し、そこで質問に答える必要がありました。これにより、MSYS環境でmingwディレクトリをマウントするfstabエントリが設定されます。<Mingw home>\msys\1.0\postinstall\pi.bat
を実行する必要があります
私の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パッケージ。
ここに行く ダウンロードする!
お役に立てれば!
ピーター
私の場合、Peterの答えは完全には機能しませんでした。私は、最新のMinGW 4.8.1 + MSysディストリビューションを使用しました(mingw-get
で両方のMSysパッケージを選択しました)。
私の問題は、プレフィックスが実際には機能せず、C:\MinGW\msys\1.0\local
内のファイルしか見つからなかったことでした。ただし、bin/include/libsフォルダーをc:\mingw,
にコピーした後、インストールも機能しました。
同じ問題があり、ブーストビルドを使用してプロトコルバッファをビルドすることで解決しました。それはうまくいきました、私はプロトコルバッファのためにjamfileを提供することができます。
私がまだ問題を抱えているのは、ブーストビルドを拡張して、プロトファイルからcppソースファイルを生成することですが、それは別の話です。