找不到Protobuf(缺少:Protobuf_PROTOC_EXECUTABLE)

时间:2019-03-07 09:00:23

标签: protocol-buffers protoc

当我在项目的构建目录中执行cmake时,出现此错误。最初我有一个

  

找不到protobuf-config.cmake

错误。因此,我将protobuf-config.cmake文件的路径提供给Protobuf_DIR。后来它开始显示此新错误:

  

CMake错误于   /opt/cmake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137   (消息):找不到Protobuf(缺少:   Protobuf_PROTOC_EXECUTABLE)

     

(找到合适的版本“ 3.6.1”,最低要求为“ 3.0.0”)

我还附加了错误日志文件: https://drive.google.com/open?id=1y7BZ6lDBtxvla7r-o188xM_FjwLqwhCx

我正在Ubuntu-18上使用cmake版本:3.13和protobuf版本:3.6.1

5 个答案:

答案 0 :(得分:4)

您可能没有安装Protobuf编译器和开发文件。要解决此问题,请运行以下命令:

sudo apt-get install protobuf-compiler libprotobuf-dev

或者,如果您是手工构建Protobuf,则不能使用RelWithDebInfo的构建类型来构建Protobuf,因为这会导致库和CMake出现问题。

答案 1 :(得分:0)

在 Ubuntu 20.04 上从 apt 安装,无权 /usr/include/google

修复:sudo chmod +Xr -R /usr/include/google

答案 2 :(得分:0)

在这里快速补充一下,在 this answer 之后安装 Protobuf 后,我必须删除我工作区中的 build 文件夹才能让 cmake 运行而不会出现此错误:)

答案 3 :(得分:-1)

默认存储库通常包含过时的protobuf版本。最好从以下来源手动安装它:

git clone --progress -b v3.10.0 https://github.com/protocolbuffers/protobuf && \
    ( \
      cd protobuf; \
      mkdir build; \
      cd build; \
      cmake ../cmake \
        -DCMAKE_BUILD_TYPE=Release \
        -Dprotobuf_BUILD_SHARED_LIBS=ON \
        -Dprotobuf_BUILD_TESTS=OFF; \
      make -j4 install; \
    ) && \
    rm -rf protobuf

答案 4 :(得分:-2)

嗨,

使用sudo apt list | grep protobuf列出您的protobuf库,它应该告诉您默认情况下将安装什么。运行protoc --version,以查看现在默认识别的内容。然后,如果需要,可以从github获取一个版本,将其编译并安装(这不会花很长时间)。然后再次运行protoc --version