PROTOBUF_GENERATE_CPP二进制路径

时间:2017-07-21 20:12:17

标签: cmake protoc

PROTOBUF_GENERATE_CPP如何知道从哪里获取protoc二进制文件?

我已经在本地编译了protobuf,并希望将我的CMakeLists.txt指向已安装的二进制文件(myfolder / protobuf-install / bin / protoc),而不是系统二进制文件(/ usr / bin / protoc)

通常对于Boost,我只是将BOOST_ROOT设置为我安装的文件夹,它会找到所有的include_directories,库等。

如何为Protobuf做好准备。我在FindProtobuf.cmake中看不到任何前缀选项。

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

错误是

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

当然,上面的路径在myfolder中,而不在系统文件夹中。但是当我明确地将根路径声明为myfolder /

时,为什么protobuf会在系统路径中查找包含

1 个答案:

答案 0 :(得分: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