首页 > 解决方案 > CMake 找不到 Protobuf `protobuf_generate_cpp`

问题描述

使用

find_package(Protobuf REQUIRED
    PATHS ${PROTOBUF_SEARCH_PATH}
)

if (NOT ${Protobuf_FOUND})
    message( FATAL_ERROR "Could not find Protobuf!" )
endif()    

protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS Foo.proto)

我收到一条错误消息Unknown CMake command "protobuf_generate_cpp"。如果我检查 Protobuff 的安装文件夹,有一个<istall path>/cmake/protobuf-module.cmake包含函数定义的 CMake 文件。

CMake    version: 3.10.2
Protobuf version: 3.6.1

这里有什么问题?

标签: cmakeprotocol-buffersprotobuf-c

解决方案


看起来 cmake API 发生了一些变化。尝试将其更改为

protobuf_generate(
 LANGUAGE cpp
 TARGET <YOUR_TARGET_NAME> 
 PROTOS Foo.proto)

这将直接将生成的文件添加到目标的源列表中。查看新选项中的protobuf_generate功能。protobuf-config.cmake


推荐阅读