How to link google protobuf libraries via cmake on linux?

c++, cmake, protocol-buffers

Solution

You could try CMake's `FindProtobuf` module:

include(FindProtobuf)
find_package(Protobuf REQUIRED)
include_directories(${PROTOBUF_INCLUDE_DIR})
...
target_link_libraries(complex
    ${Boost_FILESYSTEM_LIBRARY}
    ${Boost_SYSTEM_LIBRARY}
    ${PROTOBUF_LIBRARY}
)

For further info, run

cmake --help-module FindProtobuf

Problem

I'm trying to make it same way I made it for boost : ``` find_package(Boost COMPONENTS system filesystem REQUIRED) find_package(ProtocolBuffers) ## Compiler flags if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "-O2") set(CMAKE_EXE_LINKER_FLAGS "-lsqlite3 -lrt -lpthread") endif() target_link_libraries(complex ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${PROTOBUF_LIBRARY} ) ``` (googled it somewhere) but got bad output: ``` CMake Warning at complex/CMakeLists.txt:18 (find_package): Could not find module FindProtocolBuffers.cmake or a configuration file for package ProtocolBuffers. Adjust CMAKE_MODULE_PATH to find FindProtocolBuffers.cmake or set ProtocolBuffers_DIR to the directory containing a CMake configuration file for ProtocolBuffers. The file will have one of the following names: ProtocolBuffersConfig.cmake protocolbuffers-config.cmake ``` How can I link it with cmake? or maybe I even can compile .proto file using cmake?

Original source