FindProtobuf

Locate and configure the Google Protocol Buffers library.

The following variables can be set and are optional:

PROTOBUF_SRC_ROOT_FOLDER

When compiling with MSVC, if this cache variable is set the protobuf-default VS project build locations (vsprojects/Debug & vsprojects/Release) will be searched for libraries and binaries.

PROTOBUF_IMPORT_DIRS

List of additional directories to be searched for imported .proto files.

Defines the following variables:

PROTOBUF_FOUND

Found the Google Protocol Buffers library (libprotobuf & header files)

PROTOBUF_INCLUDE_DIRS

Include directories for Google Protocol Buffers

PROTOBUF_LIBRARIES

The protobuf libraries

PROTOBUF_PROTOC_LIBRARIES

The protoc libraries

PROTOBUF_LITE_LIBRARIES

The protobuf-lite libraries

The following cache variables are also available to set or use:

PROTOBUF_LIBRARY

The protobuf library

PROTOBUF_PROTOC_LIBRARY

The protoc library

PROTOBUF_INCLUDE_DIR

The include directory for protocol buffers

PROTOBUF_PROTOC_EXECUTABLE

The protoc compiler

PROTOBUF_LIBRARY_DEBUG

The protobuf library (debug)

PROTOBUF_PROTOC_LIBRARY_DEBUG

The protoc library (debug)

PROTOBUF_LITE_LIBRARY

The protobuf lite library

PROTOBUF_LITE_LIBRARY_DEBUG

The protobuf lite library (debug)

Example:

find_package(Protobuf REQUIRED)
include_directories(${PROTOBUF_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto)
add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS})
target_link_libraries(bar ${PROTOBUF_LIBRARIES})

Note

The PROTOBUF_GENERATE_CPP macro and add_executable() or add_library() calls only work properly within the same directory.

protobuf_generate_cpp

Add custom commands to process .proto files:

protobuf_generate_cpp (<SRCS> <HDRS> [<ARGN>...])
SRCS

Variable to define with autogenerated source files

HDRS

Variable to define with autogenerated header files

ARGN

.proto files