2017-07-21 1 views
0

PROTOBUF_GENERATE_CPPはどのようにしてprotocバイナリをどこから取得するのか知っていますか?PROTOBUF_GENERATE_CPPバイナリパス

私はローカルにいるProtobufをコンパイルしているし、インストールバイナリ(myfolderなど/いるProtobufインストール/ binに/ protoc)とないシステムバイナリ(は/ usr/binに/ protoc)

に私のCMakeLists.txtをポイントしたいと思いますBoostのために、私はBOOST_ROOTをインストールしたフォルダに設定するだけで、すべてのinclude_directory、ライブラリなどを見つけることができます。

Protobufのためにはどうすればよいでしょうか。 FindProtobuf.cmakeに接頭辞オプションはありません。

set(Protobuf_SRC_ROOT_FOLDER "${CMAKE_SOURCE_DIR}/myfolder/") 
find_package(Protobuf MODULE REQUIRED) 

誤差は勿論、上記のパスはmyfolderなどであり、/はなく、システムフォルダに

file STRINGS file "/usr/include/google/protobuf/stubs/common.h" cannot be read. 
Call Stack (most recent call first): 
CMakeLists.txt:17 (find_package) 

あります。しかし、なぜいるProtobufはMyFolder/

答えて

0

モジュールFindProtobuf.cmakeは、様々なものでそれをヒントする方法の素敵なdescriptionを持っていると私は明示的にルートパスを宣言したシステムパスに含まれて探しています。次キャッシュ変数も設定または使用することが可能です

...

Protobuf_PROTOC_EXECUTABLE

ザ・例えばは、実行可能でヒンティングはProtobuf_PROTOC_EXECUTABLE変数を設定して実施することができますprotocコンパイラ

cmake -DProtobuf_PROTOC_EXECUTABLE=myfolder/protobuf-install/bin/protoc 

また、一般的なのCMAKE_PREFIX_PATH変数もうまくいきます。Hinting Find<name>.cmake Files with a custom directoryを参照してください。

+0

私は少し質問を変更しました。問題の原因はバイナリではなくインクルードフォルダから始まります。 – infoclogged

関連する問題