cmakeprotocol-buffersprotobuf-c

CMake can't find Protobuf `protobuf_generate_cpp`


Using

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)

I am getting an error message Unknown CMake command "protobuf_generate_cpp". If I check install folder of Protobuff, there is a CMake file <istall path>/cmake/protobuf-module.cmake which contains the function definition.

CMake    version: 3.10.2
Protobuf version: 3.6.1

What is the problem here?


Solution

  • Looks like the cmake API has changed a bit. Try changing it to

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

    This will directly add the generated files to the target's source list. Have a look in at the protobuf_generate function in protobuf-config.cmake for the new options.