#c #grpc
#c #grpc
Вопрос:
В моем проекте используется MySQL connector, который использует OpenSSL в качестве своей зависимости. Я интегрировал gRPC с моим проектом, используя fetchContent, с OpenSSL, установленным в моей системе. Но он все еще использует BoringSSL.
Ответ №1:
Добавьте их в свой CMakeList.txt
set(gRPC_SSL_PROVIDER package)
Комментарии:
1. В качестве альтернативы вы можете добавить
-DgRPC_SSL_PROVIDER=package
в качестве параметра командной строки при вызовеcmake
. Именно так gRPC описывает построение библиотек gRPC. Это способ задать дополнительные параметры без изменений в исходных текстах.
Ответ №2:
gRPC предлагает два способа получения своих зависимостей: с помощью add_subdirectory
(я не большой поклонник этого способа) и с find_package
(это мой любимый).
Как описано здесь:
# Providers for third-party dependencies (gRPC_*_PROVIDER properties):
# "module": build the dependency using sources from git submodule (under third_party)
# "package": use cmake's find_package functionality to locate a pre-installed dependency
Итак, чтобы использовать вашу собственную библиотеку SSL, лучший способ — это:
- Убедитесь, что gRPC использует
find_package
, с-DgRPC_SSL_PROVIDER=package
. - Убедитесь, что ваша библиотека SSL будет найдена
find_package
. Либо потому, что он установлен в масштабах всей системы, либо с помощью,-DCMAKE_PREFIX_PATH
чтобы помочьfind_package
его найти.
Вот пример извлечения и построения gRPC и его зависимостей из исходных текстов. Обратите особое внимание на эту строку, где gRPC предписывается использовать режим «пакет».
Я бы не советовал добавлять set(gRPC_SSL_PROVIDER package)
в ваш CMakeLists.txt . Это не должно беспокоить CMakeLists вашего проекта, следовательно, лучше передать это как команду ( -DgRPC_SSL_PROVIDER=package
).
Ответ №3:
Мы используем gRPC путем компиляции исходного кода. Возникла проблема (ошибка сегмента приложения), из-за которой потребовалось отключить BoringSSL для gRPC и использовать OpenSSL, установленный в системе. Есть много предложений. Но тот, который сработал для меня, приведен ниже.
cmake -DgRPC_SSL_PROVIDER=OpenSSL . amp;amp; make amp;amp; make install
Комментарии:
1. Это неправильно, смотрите здесь: github.com/grpc/grpc/blob/master/CMakeLists.txt#L69-L71 Это должно быть
-DgRPC_SSL_PROVIDER=module
или-DgRPC_SSL_PROVIDER=package