c++ - 使用 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_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}
)
解决方案
推荐阅读
- shell - 用于显示文件内容的 shell 程序,否则打印文件不存在于基于用户的目录中,将输入文件名
- spring-boot - Spring Boot Netflix zuul 延迟对微服务的请求
- java - 为什么看似明确的类型提示构造函数调用存在“没有匹配的 ctor”?
- php - Bootstrap 4.3.1 模态不工作
- java - 从 SQLite 数据库中检索图像(BLOB 数据类型)
- python - 如何删除我的不和谐机器人在特定频道中发送的先前消息?
- javascript - 资产文件未在 Shopify 上加载
- php - Symfony 5 - 如何从一对一关系向表单添加字段?
- node.js - Node js Express 多次执行单个调用
- python - 警告:此运行时之前已导入以下包:[PIL] 您必须重新启动运行时才能使用新安装的版本