CMAKE_MINIMUM_REQUIRED(VERSION 3.2) file(GLOB ProtoFiles "${CMAKE_CURRENT_SOURCE_DIR}/*.proto") FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR} PROTOMODEL_PATH) FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR} PROTOBINDING_PATH) FOREACH(proto ${ProtoFiles}) FILE(TO_NATIVE_PATH ${proto} proto_native) EXECUTE_PROCESS(COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} --proto_path=${PROTOMODEL_PATH} --cpp_out=${PROTOBINDING_PATH} ${proto_native} RESULT_VARIABLE rv) # Optional, but that can show the user if something have gone wrong with the proto generation IF(${rv}) MESSAGE("Generation of data model returned ${rv} for proto ${proto_native}") ENDIF() ENDFOREACH(proto) PROTOBUF_GENERATE_CPP(ProtoSources ProtoHeaders ${ProtoFiles}) set(QuicCoreProtoIncPath ${CMAKE_CURRENT_BINARY_DIR} CACHE INTERNAL "Path to generated protobuf files.") set(CoreProtoSource ${ProtoSources} CACHE INTERNAL "quic-core-proto source files generated by proto.") add_library(QuicCoreProto STATIC ${ProtoSources} ${ProtoHeaders}) target_link_libraries(QuicCoreProto ${PROTOBUF_LIBRARY})