hax*_*nek 4 c++ homebrew makefile cmake grpc
我正在尝试使用 gRPC 库,但是我不断收到错误消息,告诉我找不到 .cmake 文件,或者出现链接器错误,可能是由于我的 CMakeLists.txt 造成的。在我下面的示例中,他们将 cmake 中的库简单地称为 gRPC,并且我也尝试了关键字 grpc_cpp_plugin,但是似乎都不起作用。
对于上下文,我使用的是 macOS Mojave,并且我已经使用自制软件安装了 gRPC 库。
Homebrew 在/usr/local/Cellar/grpc/1.22.0.
我在这里使用了适用于另一个项目的 cmake 文件,但是我添加了 protobuf 和 gRPC 库,添加它们后就是我收到错误的时候。同样,部分代码是从上面的链接借用的(特别是 gRPC 文件所在位置的名称)。
我的 CMakeLists.txt 文件
cmake_minimum_required( VERSION 2.8 )
project( gRPC_server )
# setup opencv
find_package( OpenCV REQUIRED )
# SETUP PROTOBUF
set(protobuf_MODULE_COMPATIBLE TRUE)
find_package( Protobuf REQUIRED )
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
# SETUP GRPC
find_package( gRPC REQUIRED )
set(_GRPC_GRPCPP_UNSECURE gRPC::grpc++_unsecure)
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
# mostly just to set it to the correct compiler
SET(CMAKE_CXX_FLAGS "-std=c++0x -Wall -g -Werror")
add_executable( server server.cpp compiled/image.grpc.pb.cc compiled/image.pb.cc )
target_link_libraries( server ${OpenCV_LIBS} ${_GRPC_GRPCPP_UNSECURE} ${_PROTOBUF_LIBPROTOBUF} )
add_executable( client client.cpp compiled/image.grpc.pb.cc compiled/image.pb.cc )
target_link_libraries( client ${OpenCV_LIBS} ${_GRPC_GRPCPP_UNSECURE} ${_PROTOBUF_LIBPROTOBUF} )
Run Code Online (Sandbox Code Playgroud)
特别奇怪的是,错误消息毫无意义
-- Found OpenCV: /opt/local (found version "3.4.3")
-- Found Protobuf: /usr/local/lib/libprotobuf.a (found version "3.7.0")
CMake Error at CMakeLists.txt:14 (find_package):
By not providing "FindgRPC.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "gRPC", but
CMake did not find one.
Could not find a package configuration file provided by "gRPC" with any of
the following names:
gRPCConfig.cmake
grpc-config.cmake
Add the installation prefix of "gRPC" to CMAKE_PREFIX_PATH or set
"gRPC_DIR" to a directory containing one of the above files. If "gRPC"
provides a separate development package or SDK, be sure it has been
installed.
Run Code Online (Sandbox Code Playgroud)
如果我注释掉 gRPC 内容,就会收到链接器错误。
任何帮助表示赞赏,谢谢!
小智 5
您必须通过 pkg-config 找到 gRPC。gRPC C++ QuickStart中已对此进行了说明。
cmake 代码示例:
find_package(PkgConfig REQUIRED)
pkg_search_module(GRPC REQUIRED grpc)
pkg_search_module(GRPCPP REQUIRED grpc++>=1.22.0)
Run Code Online (Sandbox Code Playgroud)
我在我自己的tensorflow-serving-client存储库中使用它们。
| 归档时间: |
|
| 查看次数: |
16624 次 |
| 最近记录: |