Я пытаюсь собрать gRPC C++ с помощью bazel, как в руководстве https://github.com/grpc/grpc/blob/master/BUILDING.md но у меня есть эта ошибка
PS D:\programming\cpp\grpc> bazel build --enable_bzlmod=false :all
Starting local Bazel server and connecting to it...
DEBUG: C:/users/oleg0/_bazel_oleg0/7mt2iksj/external/com_google_protobuf/bazel/system_python.bzl:230:14: WARNING: no system python available, builds against system python will fail
WARNING: C:/users/oleg0/_bazel_oleg0/7mt2iksj/external/google_cloud_cpp/google/cloud/BUILD.bazel:53:15: in config_setting rule @google_cloud_cpp//google/cloud:enable_opentelemetry_valid-transition: target '@google_cloud_cpp//google/cloud:enable_opentelemetry_valid-transition' depends on deprecated target '@google_cloud_cpp//:enable-experimental-opentelemetry': this flag is now GA, please use //:enable_opentelemetry instead.
WARNING: C:/users/oleg0/_bazel_oleg0/7mt2iksj/external/google_cloud_cpp/google/cloud/BUILD.bazel:62:15: in config_setting rule @google_cloud_cpp//google/cloud:disable_opentelemetry: target '@google_cloud_cpp//google/cloud:disable_opentelemetry' depends on deprecated target '@google_cloud_cpp//:enable-experimental-opentelemetry': this flag is now GA, please use //:enable_opentelemetry instead.
INFO: Analyzed 186 targets (214 packages loaded, 6683 targets configured).
INFO: Found 186 targets...
ERROR: C:/users/oleg0/_bazel_oleg0/7mt2iksj/external/com_google_protobuf/src/google/protobuf/compiler/rust/BUILD.bazel:50:11: Compiling src/google/protobuf/compiler/rust/accessors/unsupported_field.cc [for tool] failed: (Exit 2): cl.exe failed: error executing command (from target @com_google_protobuf//src/google/protobuf/compiler/rust:accessors) C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.exe /nologo /DCOMPILER_MSVC /DNOMINMAX /D_WIN32_WINNT=0x0601 /D_CRT_SECURE_NO_DEPRECATE ... (remaining 67 arguments skipped)
unsupported_field.cc
external/com_google_protobuf/src/google/protobuf/compiler/rust/accessors/unsupported_field.cc(9): fatal error C1083: google/protobuf/compiler/rust/accessors/accessor_generator.h: No such file or directory,
ERROR: D:/programming/cpp/grpc/src/proto/grpc/reflection/v1alpha/BUILD:25:19 Compiling src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc failed: (Exit 2): cl.exe failed: error executing command (from target @com_google_protobuf//src/google/protobuf/compiler/rust:accessors) C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.exe /nologo /DCOMPILER_MSVC /DNOMINMAX /D_WIN32_WINNT=0x0601 /D_CRT_SECURE_NO_DEPRECATE ... (remaining 67 arguments skipped)
INFO: Elapsed time: 34.995s, Critical Path: 3.65s
INFO: 9 processes: 9 internal.
FAILED: Build did NOT complete successfully
базель 6.4.0 грпк v1.62.1
Что я сделал:
Обновлены субмодули git submodule update --init
И
setx BAZEL_VC_FULL_VERSION 16.11.34
setx BAZEL_VC "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC"
Прежде всего, сборка gRPC Bazel не использует подмодули git, поэтому вам не нужно их обновлять. А Protobuf недавно исправил проблему удаления ненужных целей ржавчины, но это немного странно, поскольку ни один выпущенный gRPC не использовал ни одну версию Protobuf с этой проблемой. Вы можете проверить версию Protobuf, используемую в этом случае.
Я починил это! Но я использовал Cmake вместо Bazel https://habr.com/ru/companies/infopulse/articles/265805/
cmake -G "Visual Studio 16 2019"
(или вашу версию VS)cmake ../.. -G «Visual Studio 16 2019»
Я почти уверен, что ответ на проблему с Bazel — предоставить более короткий путь для выходных артефактов через: --output_base=C:\O
или аналогичный. Ошибки, с которыми вы сталкиваетесь, не найдены, могут быть связаны с длиной сгенерированных путей к файлам.
Что мне помогло:
> bazel --output_base=C:\O build :all
Кажется, вы не устанавливаете пакет разработки Google protobuf перед сборкой grpc.