Конан и gRPC: неопределенные ссылки на различные символы `gpr_`

Это проблема с использованием gRPC с Conan в моем проекте. Короче говоря, у меня есть проект на основе gRPC, и мои зависимости:

    requires = (
        "predictions-algorithms/15.16.51@navassist/testing",
        "grpc/1.20.0@inexorgame/stable",
        "protobuf/3.6.1@bincrafters/stable",
        "protoc_installer/3.6.1@bincrafters/stable"
    )

Однако в конце процесса линковки проекта появляется куча сообщений о неопределенных ссылках на различные символы gpr_* в libgrpc.a.

Я проверил с помощью readelf -Ws my/package/path/to/libgrpc.a | grep gpr_(some symbol), и, конечно же, все эти символы там не определены.

Я также открыл вопрос в репозитории пакета gRPC, который я использую выше.

Не знаю, что делать дальше... Любая помощь приветствуется.


person Lajka    schedule 16.10.2019    source источник
comment
Похоже, что они определены в отдельной libgpr, если репозиторий gRPC README следует верить.   -  person Botje    schedule 16.10.2019
comment
@Botje Я искал символы в libgpr.a, и, кажется, они там есть! readelf -Ws /path/to/package/libgpr.a | grep 'gpr_free' возвращает FUNC GLOBAL DEFAULT 1 gpr_free. Итак, мне нужно выяснить, почему эти символы не связаны должным образом...   -  person Lajka    schedule 16.10.2019
comment
В conanfile упоминается зависимость от gpr, так как ваш проект использует информацию о пакете conan (если вообще использует)?   -  person Botje    schedule 16.10.2019
comment
Это не :D Извините, новичок в конане. Не могли бы объяснить или поделиться какой-нибудь ссылкой, по поводу этого?   -  person Lajka    schedule 16.10.2019
comment
Взгляните на существующие интеграции или начало работы, на которой показано, как использовать генератор CMake.   -  person Botje    schedule 16.10.2019
comment
Сделаем, большое спасибо! :)   -  person Lajka    schedule 16.10.2019
comment
Я не знаком с Conan, но символы gpr_* определены в libgpr. github.com/grpc/grpc/blob/master/CMakeLists.txt# L854   -  person user3126412    schedule 16.10.2019
comment
пожалуйста, отправьте вопрос непосредственно автору: github.com/inexorgame/conan-grpc   -  person uilianries    schedule 16.10.2019
comment
@uilianries Да, написано в посте...   -  person Lajka    schedule 18.10.2019


Ответы (1)


Итак, проблема была в том, что я линковался с libgrpc, а не с его зависимостями!

В конце концов, я изменил свой CMakeLists.txt, чтобы он выглядел так (не спрашивайте меня, почему он не был таким с самого начала...):

target_link_libraries(${PROJECT_NAME}
    ${CONAN_LIBS}
)

И тогда он успешно строился.

person Lajka    schedule 18.10.2019