微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用grpc构建项目时gitlab中的错误

如何解决使用grpc构建项目时gitlab中的错误

它在本地使用 grpc 构建项目。但是在 gitlab 上它给出了一个错误。有没有人有任何想法?在本地,一切都建立并运行良好。我在 gitlab 上使用 CI 时遇到了问题。这个错误意味着什么?我不明白到底需要什么?我还尝试使用不同的编译器运行 - 错误仍然存​​在。

$ cmake --build .
[  4%] Running C++ gRPC compiler on include/protocol/proto/service.proto
[  8%] Running cpp protocol buffer compiler on /builds/k-morozov/appchat/build/src/protocol
Could not map to virtual file: /builds/k-morozov/appchat/build/src/protocol: Input file is a directory.
make[2]: *** [src/protocol/CMakeFiles/protocol_lib.dir/build.make:63: src/protocol/protocol.pb.h] Error 1
make[1]: *** [CMakeFiles/Makefile2:93: src/protocol/CMakeFiles/protocol_lib.dir/all] Error 2

cmake:

cmake_minimum_required(VERSION 3.5)
set(PROTOBUF_FILES
  "include/protocol/proto/messages.proto"
)
set(PROTOS_FILES
  ${PROTOBUF_FILES}
  "include/protocol/proto/service.proto"
)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
find_package(Protobuf required)
find_package(GRPC required)
find_package(Threads required)

set(PROTO_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR})
file(MAKE_DIRECTORY ${PROTO_SRC_DIR})
include_directories(${PROTO_SRC_DIR})

protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_SRC_DIR} ${PROTOS_FILES})
grpc_generate_cpp(GRPC_SRCS GRPC_HDRS ${PROTO_SRC_DIR} ${PROTOS_FILES})

set(PROTOCOL_LIB_NAME protocol_lib)
add_library(${PROTOCOL_LIB_NAME} STATIC)

target_sources(${PROTOCOL_LIB_NAME}
    PUBLIC
        ${CMAKE_CURRENT_SOURCE_DIR}/include/protocol/protocol.h
    PRIVATE
        ${PROTO_HDRS}
        ${PROTO_SRCS}
        ${GRPC_SRCS}
        "include/protocol/command_table.h"
)

set_target_properties(${PROTOCOL_LIB_NAME} PROPERTIES
        CXX_STANDARD 17
        CXX_STANDARD_required ON
)

target_compile_options(${PROTOCOL_LIB_NAME} PRIVATE "-fPIC")
target_link_libraries(${PROTOCOL_LIB_NAME}
    PUBLIC
        gpr
        gRPC::grpc++
        protobuf::libprotobuf
        gRPC::grpc++_reflection
    PRIVATE
        pthread
        project_sanitizers
)

include_directories(${Protobuf_INCLUDE_Dirs})

target_include_directories(${PROTOCOL_LIB_NAME}
    PUBLIC
        "./include"
        ${CMAKE_BINARY_DIR}/src/protocol/
    PRIVATE
        ${CMAKE_CURRENT_BINARY_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。