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会在系统路径中查找包含答案 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。