首页 > 解决方案 > 在 CMake 中添加 gRPC::grpc++ 库依赖后,libprotocd.lib 的意外路径

问题描述

我有一个由柯南编译的 gRPC 1.23.0(所有依赖项也由柯南解决)。我有一个使用 grpc 库的 CMake 项目:

set (LIB_DEPS
  protobuf::libprotobuf
  gRPC::grpc++
)
target_link_libraries(${PROJECT_NAME} PUBLIC ${LIB_DEPS})

CMakeLists.txt当我从这个属性中生成一个 VS 项目时Linker - Input - Addition Dependencies,我有下一个值:

C:\.conan\data\protobuf\3.9.1\kpa_conan\stable\package\b786e9ece960c3a76378ca4d5b0d0e922f4cedc1\lib\libprotobufd.lib <-- (1)
C:\.conan\data\grpc\1.23.0\kpa_conan\stable\package\d85cccdf40588ac852bd1445d45838487543194f\lib\grpc++.lib
libprotocd.lib   <-- (2)
libprotobufd.lib  <-- (3)
C:\.conan\data\grpc\1.23.0\kpa_conan\stable\package\d85cccdf40588ac852bd1445d45838487543194f\lib\grpc.lib
C:\.conan\data\grpc\1.23.0\kpa_conan\stable\package\d85cccdf40588ac852bd1445d45838487543194f\lib\gpr.lib
C:\.conan\data\c-ares\1.15.0\kpa_conan\stable\package\b786e9ece960c3a76378ca4d5b0d0e922f4cedc1\lib\cares.lib
C:\.conan\data\grpc\1.23.0\kpa_conan\stable\package\d85cccdf40588ac852bd1445d45838487543194f\lib\address_sorting.lib
wsock32.lib
kernel32.lib

(1) - 我添加的预期有效路径CMakeLists.txt

(2),(3) - 意外且无效的路径,由gRPC::grpc++in添加CMakeLists.txt。如果我更改gRPC::grpc++gRPC::grpc,第 (2) 行和第 (3) 行将消失,但路径grpc++.lib也会消失,但我需要它。

如何避免这种奇怪的无效路径libprotocd.liband libprotobufd.lib

标签: visual-studiocmakegrpcconan

解决方案


要正确链接到 grpc 目标,您可以使用:

target_link_libraries(${PROJECT_NAME} PUBLIC CONAN_PKG::grpc)

这应该包含所需的一切。此处有关此方法的更多详细信息:https ://docs.conan.io/en/latest/integrations/build_system/cmake/cmake_generator.html#targets-approach


推荐阅读