C++ 编译gRPC C++;vcpkg示例

C++ 编译gRPC C++;vcpkg示例,c++,makefile,cmake,grpc,vcpkg,C++,Makefile,Cmake,Grpc,Vcpkg,我正在尝试使用随vcpkg manager安装的grpc构建和运行grpc示例 我通过克隆和查找grpc安装了vcpkg manager,如下所示: sudo apt get install-y解压构建必需 git克隆https://github.com/microsoft/vcpkg cd-vcpkg/ ./bootstrap-vcpkg.sh-禁用度量 /vcpkg搜索grpc /vcpkg安装grpc 导出路径=$PATH:$HOME/vcpkg/downloads/tools/cmake

我正在尝试使用随vcpkg manager安装的grpc构建和运行grpc示例

我通过克隆和查找grpc安装了vcpkg manager,如下所示:

sudo apt get install-y解压构建必需
git克隆https://github.com/microsoft/vcpkg
cd-vcpkg/
./bootstrap-vcpkg.sh-禁用度量
/vcpkg搜索grpc
/vcpkg安装grpc
导出路径=$PATH:$HOME/vcpkg/downloads/tools/cmake-3.14.0-linux/cmake-3.14.0-linux-x86_64/bin
太好了!所以我想我有grpc。我也需要protobuf,但它是与vcpkg的grpc一起安装的。如果我尝试安装protobuf,我会得到以下输出:

an@ubuntu:~/vcpkg$。/vcpkg安装协议
计算机安装计划。。。
已安装以下软件包:
protobuf[core]:x64 linux
已安装包protobuf:x64 linux
总运行时间:205.3 us
protobuf:x64 linux包提供了CMake目标:
查找_包(需要protobuf配置)
目标链接库(主私有protobuf::libprotoc protobuf::libprotobuf protobuf::libprotobuf lite
要仔细检查,我使用
/vcpkg list
来显示我安装的所有软件包。下面是它的外观。注意:protobuf和grpc

adrian@ubuntu:~/vcpkg$ ./vcpkg list
abseil:x64-linux                                   2020-03-03#8     an open-source collection designed to augment th...
c-ares:x64-linux                                   2019-5-2-1       A C library for asynchronous DNS requests
grpc:x64-linux                                     1.31.1           An RPC library and framework
openssl-unix:x64-linux                             1.1.1h           OpenSSL is an open source project that provides ...
openssl:x64-linux                                  1.1.1g#1         OpenSSL is an open source project that provides ...
protobuf:x64-linux                                 3.13.0#2         Protocol Buffers - Google's data interchange format
re2:x64-linux                                      2020-10-01       RE2 is a fast, safe, thread-friendly alternative...
upb:x64-linux                                      2020-08-19       μpb (often written 'upb') is a small protobuf i...
zlib:x64-linux                                     1.2.11#9         A compression library
我们还可以在下面突出显示的
/vcpkg/installed/x64 linux/libs
目录中看到grpc和protobuf的二进制文件:


好的,太好了!现在我想尝试用vcpkg管理器插件编译grpc的hello world示例。在grpc官方网站上,他们有一个快速的编译说明。(默认情况下,他们以本机方式安装grpc,但卸载很混乱,这就是为什么我选择vcpkg的原因)。因此,让我们尝试使用以下工具进行编译:

mkdir-pcmake/build
pushd-cmake/build
cmake-DCMAKE_PREFIX_PATH=$MY_INSTALL_DIR../。。
make-j
需要注意的是,在开始时,他们以本机方式安装grpc(删除未链接的vcpkg很麻烦)。他们的说明指示设置
MY\u INSTALL\u DIR
,如下所示:

export MY\u INSTALL\u DIR=$HOME/.local
export PATH=“$PATH:$MY\u INSTALL\u DIR/bin”
但这是为了在本机上安装和编译grpc的二进制文件。不幸的是,我不知道vckpkg管理器的二进制文件在哪里。我看到cmake安装了一个二进制文件,并且它位于:
vcpkg/downloads/tools
,但我没有看到grpc或protobuf文件夹中有相应的二进制文件(见下图).vcpkg的二进制文件在哪里?根据grpc的官方指示,我应该使用cmake并在下面定义这些文件

find_包(需要gRPC配置)
查找_包(需要Protobuf配置)
不幸的是,我对vcpkg和依赖项比较陌生,对使用Makefiles有一点经验(我相信这与cmake/cmakelists有很大不同。我从来没有从头制作过cmake文件,因为我主要使用Makefiles)。有人能给我指出如何使用vcpkg编译和运行这些示例的正确方向吗(或者建议更好的方法?)我的目标是学习如何使用vcpkg,并将其集成到现有项目中,如gRPC的示例文件

更新1:

我将cd刻录到示例hellow world文件夹,并按照建议运行以下操作:

mkdir生成目录
cd生成目录
克马克。。
制作
当我运行
cmake..
时,出现以下错误:

grpc/examples/cpp/helloworld/build$cmake。。
CMake错误位于/usr/share/CMake-3.16/Modules/cmakeDeterminesSystem。CMake:99(消息):
找不到工具链文件:/usr/vcpkg/scripts/buildsystems/vcpkg.cmake
调用堆栈(最新调用优先):
CMakeLists.txt:24(项目)
CMake错误:CMake无法找到与“Unix Makefiles”对应的生成程序。未设置CMake_MAKE_程序。您可能需要选择其他生成工具。
CMake错误:启用语言后未设置CMake_C_编译器
CMake错误:启用语言后未设置CMake_CXX_编译器
--配置不完整,出现错误!
这表明我没有使用正确的cmake(vcpkg使用的cmake)。因此,我做了一些挖掘,根据这一点,我需要将vcpkg软件包与
/vcpkg integrate install
集成,只要我将其指向其中的cmake,它就会公开我系统上的所有软件包。然后它说我应该创建一个路径:

~/vcpkg$。/vcpkg集成安装
已应用此vcpgg根目录的用户范围集成。
CMake项目应该使用:“-DCMAKE_TOOLCHAIN_FILE=/home/adrian/vcpkg/scripts/buildsystems/vcpkg.CMake”
因此,我尝试使用
cmake..
进行构建,但我提供了
DCMAKE\u TOOL\u CHAIN
参数,就像这样,但我回到了原来的问题

/grpc/examples/cpp/helloworld/build$cmake..“-DCMAKE\u toolschain\u FILE=/home/adrian/vcpkg/scripts/buildsystems/vcpkg.cmake”
CMake错误位于/usr/share/CMake-3.16/Modules/cmakeDeterminesSystem。CMake:99(消息):
找不到工具链文件:/usr/vcpkg/scripts/buildsystems/vcpkg.cmake
调用堆栈(最新调用优先):
CMakeLists.txt:24(项目)
CMake错误:CMake无法找到与“Unix Makefiles”对应的生成程序。未设置CMake_MAKE_程序。您可能需要选择其他生成工具。
CMake错误:启用语言后未设置CMake_C_编译器
CMake错误:启用语言后未设置CMake_CXX_编译器
--配置不完整,出现错误!

似乎我导出了vcpkg目录中的cmake的错误版本

我导出了ubuntu附带的默认cmake版本3.14.0,而不是vcpkg附带的cmake版本3.17.2。下面解决了我的问题,因此我可以在以后编译示例

export PATH=$PATH:$HOME/vcpkg/downloads/tools/cmake-3.17.2-linux/cmake-3.17.2-linux-x86_64/bin
检查以确保已将其添加到路径:

a@ubuntu:~/grpc/examples/cpp/hellowo