<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【gRPC】C++下使用CMakeLists快速構建項目

      在gRPC中,編寫.proto文件(protocol buffer文件)來定義RPC服務的接口是第一步

      先通過proto的代碼生成器編譯生成pb.h、pb.cc、grpc.pb.h、grpc.pb.cc。然后在編寫client和server時引入頭文件進行使用。以下的代碼能幫助我們快速的生成以上的四個文件并編譯client和server到可執行文件,根據需求修改內容即可

      #標記最低CMake版本
      cmake_minimum_required(VERSION 3.5.1)
      
      #項目名稱及使用語言情況
      project(HelloWorld C CXX)
      
      #指定本地的CMake程序位置,如果電腦上在不同位置都安裝了CMake,可以依次往后附加,此處添加的為官網教程安裝位置
      list(APPEND CMAKE_PREFIX_PATH "/home/$ENV{USER}/.local/bin")
      
      #查找本地Protobuf模塊的庫信息,實際上CMake就是在找Protobuf-config.cmake文件
      set(protobuf_MODULE_COMPATIBLE TRUE)
      find_package(Protobuf CONFIG REQUIRED)
      message(STATUS "Using protobuf ${Protobuf_VERSION}")
      
      set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
      set(_REFLECTION gRPC::grpc++_reflection)
      if(CMAKE_CROSSCOMPILING)
        find_program(_PROTOBUF_PROTOC protoc)
      else()
        set(_PROTOBUF_PROTOC $<TARGET_FILE:protobuf::protoc>)
      endif()
      
      # Find gRPC installation
      # Looks for gRPCConfig.cmake file installed by gRPC's cmake installation.
      #查找本地gRPC模塊的庫信息
      find_package(gRPC CONFIG REQUIRED)
      message(STATUS "Using gRPC ${gRPC_VERSION}")
      
      set(_GRPC_GRPCPP gRPC::grpc++)
      if(CMAKE_CROSSCOMPILING)
        find_program(_GRPC_CPP_PLUGIN_EXECUTABLE grpc_cpp_plugin)
      else()
        set(_GRPC_CPP_PLUGIN_EXECUTABLE $<TARGET_FILE:gRPC::grpc_cpp_plugin>)
      endif()
      
      # Proto file
      get_filename_component(data_proto "../data.proto" ABSOLUTE)
      get_filename_component(data_proto_path "${data_proto}" PATH)
      
      # Generated sources
      #代碼生成器的目標文件位置
      set(data_proto_srcs "${CMAKE_CURRENT_BINARY_DIR}/data.pb.cc")
      set(data_proto_hdrs "${CMAKE_CURRENT_BINARY_DIR}/data.pb.h")
      set(data_grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/data.grpc.pb.cc")
      set(data_grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/data.grpc.pb.h")
      #代碼生成器腳本,根據proto文件生成C++的四個文件
      add_custom_command(
            OUTPUT "${data_proto_srcs}" "${data_proto_hdrs}" "${data_grpc_srcs}" "${data_grpc_hdrs}"
            COMMAND ${_PROTOBUF_PROTOC}
            ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}"
              --cpp_out "${CMAKE_CURRENT_BINARY_DIR}"
              -I "${data_proto_path}"
              --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}"
              "${data_proto}"
            DEPENDS "${data_proto}")
      
      #到這里為止,代碼生成器部分結束,以下為對項目的編譯鏈接
      
      # Include generated *.pb.h files
      #項目include目錄,可以在后面不斷添加項目使用的頭文件的目錄位置
      include_directories("${CMAKE_CURRENT_BINARY_DIR}")
      
      #將grpc的四個文件編譯成一個庫
      # data_grpc_proto
      add_library(data_grpc_proto
        ${data_grpc_srcs}
        ${data_grpc_hdrs}
        ${data_proto_srcs}
        ${data_proto_hdrs})
      #鏈接庫data_grpc_proto,會生成鏈接文件
      target_link_libraries(data_grpc_proto
        ${_REFLECTION}
        ${_GRPC_GRPCPP}
        ${_PROTOBUF_LIBPROTOBUF})
      
      #編譯鏈接server和client,這里需要自己提前寫好,否則會報錯喲
      # Targets [async_](client|server)
      foreach(_target
        client server)
        add_executable(${_target} "${_target}.cpp")
        target_link_libraries(${_target}
          data_grpc_proto
          ${_REFLECTION}
          ${_GRPC_GRPCPP}
          ${_PROTOBUF_LIBPROTOBUF})
      endforeach()
      
      
      posted @ 2022-09-15 11:08  縉云燒餅  閱讀(2115)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲AV无码不卡在线播放| 国产亚洲精品久久久久婷婷瑜伽| 无码人妻精品丰满熟妇区| 女人扒开腿让男人桶到爽| 欧洲精品免费一区二区三区| 国产成人高清精品免费软件| 四虎在线中文字幕一区| 少妇高潮惨叫喷水在线观看| 福利一区二区在线观看| 亚洲国产精品色一区二区| 免费人成视频在线 | 久久亚洲精品成人av无| 国产精品久久久久久无毒不卡| 伊人久久大香线蕉网av| caoporn免费视频公开| japanese丰满奶水| 国产成人综合在线女婷五月99播放 | 91精品乱码一区二区三区| 国产精品自产拍在线播放| 91亚洲免费视频| 人人澡人摸人人添| 国产无遮挡免费视频免费| 中文有无人妻VS无码人妻激烈 | gogogo高清在线观看视频中文| 欧产日产国产精品精品| 啊灬啊灬啊灬快灬高潮了电影片段| 国产成人精品永久免费视频 | 国产成人精品久久综合| 国产对白老熟女正在播放| 自拍偷区亚洲综合第二区| 国产高清一区二区不卡| 国产午夜福利视频合集| 国语精品国内自产视频| 国产午夜亚洲精品福利| 久久婷婷五月综合色欧美| 日韩成人高精品一区二区| 免费人成视频网站在线18| 新野县| 国产精品一区在线蜜臀| 久久久久久久波多野结衣高潮| 成人亚洲性情网站www在线观看|