2010-11-22 17 views
13

私はCMakeでGoogle Protobufを使用しています。 Linuxでは、Protobufライブラリは次のように見つけられます:CMakeはWindows上でGoogleのprotobufを見つける方法は?

find_package(Protobuf REQUIRED) 

CMakeはライブラリの場所を知っています。どのようにすればWindows上で動作させることができますか? PROTOBUF_LIBのような、私が作成すべき環境変数はありますか?私はFindProtobuf.cmakeを見ましたが、何が必要なのか分かりません。

答えて

3

Windows上のProtobufは、あなたのPATH変数とLIB変数を検索するfind_libraryを呼び出します。

+2

find_libraryもCMAKE_INCLUDE_PATH、CMAKE_INCLUDE_PATH、CMAKE_LIBRARY_PATHを検索していることがわかりました。 –

6

私もこれで苦労しました。より明確にする。 Windowsでは

(古いWindows上で同様の7、): スタート - >コントロールパネル - >システム - > [システムの詳細設定 - >環境変数

その後のいずれかのトップパネルまたは下部にパネル(他のユーザーに適用する場合は下に配置します)では、2つの新しい変数を作成します。第一一つは、あなたの一番下に指し

  • CMAKE_INCLUDE_PATHパス(以下「Google」フォルダを含める必要があります)
  • 「libprotobuf」「libprotobuf-LITE」「liteprotoc」.libファイルが含まれている必要がありCMAKE_LIBRARY_PATHが含まれています。

変数を作成したら、OKを押してから、cmakeを再起動します(またはキャッシュを消去します)。

1

最新protobuf v3 (now in beta)は、そのままの状態でCMakeのサポートを受けています。

あなたは、サブモジュールとしているProtobufリポジトリを使用し、ちょうどすべてのいるProtobufのターゲットを取得するために

add_subdiretory("third-party/protobuf/cmake") 

を使用することができます。 その後、別の可能な方法が利用可能である

target_link_libraries(YourLibrary libprotobuf libprotobuf-lite libprotoc) 

ているProtobufする依存関係を追加することができます。いるProtobufのcmakeの設定を使用すると、構築し、かつているProtobufバイナリをインストールして、開発中のいくつかのプロジェクトでそれらを使用することができます。

git clone https://github.com/google/protobuf.git mkdir protobuf\tmp cd protobuf\tmp cmake ..\cmake cmake --build . cmake --build . --target install 

はその後あなたがこのことができます

find_package(protobuf REQUIRED 
    HINTS 
     "C:/Program Files/protobuf" 
     "C:/Program Files (x86)/protobuf") 
if (NOT PROTOBUF_FOUND) 
    message("protobuf not found") 
    return() 
endif() 

希望のようなヒントパスでfind_packageを使用することができます。

0

Windows上でcmakeを使用してprotobuf v2を使用し、プロジェクト設定でビルドする方法が見つかりました。その仕事をしているcmake-external-packages projectprotobuf-v2 CMakeListsを見てみてください。 実際には、ExternalProject_Addが間違っているために書きました(なぜなら、生成フェーズではなくビルドフェーズでの処理)。

このCMakeLists.txtは、protobuf's github releasesからprotobufをダウンロードし、抽出して、cmakeターゲットを放出します。このターゲットには、target_link_librariesという参照を追加する必要があります。

git-subtree,を使用するか、このリポジトリの内容をリポジトリのサブフォルダにコピーしてください。

次に、使用するパッケージをadd_subdiretoryと追加します。いるProtobufについては、以下を使用します

add_subdirectory(path/to/cmake-external-packages/protobuf-v2) 

いるProtobufの含みがpath/to/cmake-external-packages/includeフォルダにコピーされます。あなたは、トップレベルのCMakeListsにその場所をカスタマイズすることができます:あなたの実行のための

set (EXTERNAL_PACKAGES_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/third-party/include 
    CACHE STRING "Directory for third-party include files, where include folders will be copied") 
include_directories(${EXTERNAL_PACKAGES_INCLUDE_DIR}) 

だけの参照いるProtobufを:

add_executable(your_exe ${your_exe_sources}) 
target_link_libraries(your_exe libprotobuf libprotobuf-lite libprotoc) 

・ホープ、このことができます。

関連する問題