gRPC etcd-cpp-apiv3 windows 下编译

6 篇文章 0 订阅

介绍

gRPC 编译依赖 : openssl

etcd-cpp-apiv3 编译依赖: openssl grpc boost cpprestsdk

c++ 最不友好的地方,就是编译,非常耗时。一两天的时间,就花在编译上!

编译 openssl

编译工具说明
perlhttps://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.msi
nmakeVisual Studio 2019

编译过程:

git clone -b OpenSSL_1_1_1k https://github.com/openssl/openssl.git
cd openssl
mkdir my_build_out
perl Configure VC-WIN64-ARM no-shared --prefix=C:\tmp1\openssl\my_build_out
nmake
nmake install

编译 grpc

编译工具说明
cmakehttps://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-windows-x86_64.msi
vsVisual Studio 2019

编译过程:

git clone -b v1.38.0 https://github.com/grpc/grpc.git
cd grpc
git submodule update --init
mkdir my_build_out
mkdir cmake\build
cd cmake\build
cmake -DCMAKE_INSTALL_PREFIX=C:\tmp1\grpc\my_build_out ^
    -DgRPC_SSL_PROVIDER="package" ^
    -DOPENSSL_ROOT_DIR=C:\tmp1\openssl ^
    ../..

用 vs 打开 cmake\build\grpc.sln 编译

编译 boost

REM wget https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/boost_1_74_0.zip
REM unzip boost_1_74_0.zip
cd boost_1_74_0
bootstrap.bat
mkdir my_build_out
b2 --prefix=C:\tmp1\boost_1_74_0\my_build_out --build-type=complete ^
    --with-system ^
    --with-thread ^
    --with-random ^
    --with-chrono ^
    --with-date_time ^
    --with-atomic ^
    --with-filesystem ^
    --with-regex ^
    install

–build-type=complete ,会生成 /MT、/MTd、/MD、/MDd 版本

编译 cpprestsdk

编译工具说明
cmakehttps://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-windows-x86_64.msi
vsVisual Studio 2019

编译过程:

git clone -b v2.10.18 https://github.com/microsoft/cpprestsdk.git
cd cpprestsdk
mkdir my_build_out
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=C:\tmp1\cpprestsdk\my_build_out ^
    -DCPPREST_EXCLUDE_WEBSOCKETS=ON ^
    -DBUILD_SHARED_LIBS=OFF ^
    -DZLIB_INCLUDE_DIRS=C:\tmp1\grpc\my_build_out\include ^
    -DZLIB_LIBRARY=C:\tmp1\grpc\my_build_out\lib\zlib.lib ^
    -DCMAKE_CXX_FLAGS="-D_NO_PPLXIMP -D_NO_ASYNCRTIMP /EHsc" ^
    ..

用 vs 打开 build\cpprestsdk-root.sln 编译

需要添加 -D_NO_PPLXIMP -D_NO_ASYNCRTIMP /EHsc 编译选项,不然链接时会有问题!

编译 etcd-cpp-apiv3

编译工具说明
cmakehttps://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-windows-x86_64.msi
vsVisual Studio 2019

编译过程:

git clone https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3.git
cd etcd-cpp-apiv3
mkdir my_build_out
mkdir build
mkdir proto\google\protobuf
copy /Y C:\tmp1\grpc\my_build_out\include\google\protobuf\descriptor.proto C:\tmp1\etcd-cpp-apiv3\proto\google\protobuf\
cd build
cmake -DCMAKE_INSTALL_PREFIX=C:\tmp1\etcd-cpp-apiv3\my_build_out ^
    -DBOOST_INCLUDEDIR=C:\tmp1\boost_1_74_0\my_build_out\include ^
    -DBOOST_LIBRARYDIR=C:\tmp1\boost_1_74_0\my_build_out\lib ^
    -DProtobuf_INCLUDE_DIR=C:\tmp1\grpc\third_party\protobuf\src ^
    -DProtobuf_LIBRARIES=C:\tmp1\grpc\my_build_out\lib\libprotobuf.lib ^
    -DProtobuf_PROTOC_EXECUTABLE=C:\tmp1\grpc\my_build_out\bin\protoc.exe ^
    -DGPR_LIBRARY=C:\tmp1\grpc\my_build_out\lib\gpr.lib ^
    -DGRPC_LIBRARY=C:\tmp1\grpc\my_build_out\lib\grpc.lib ^
    -DGRPC_INCLUDE_DIR=C:\tmp1\grpc\my_build_out\include ^
    -DGRPC_GRPC++_REFLECTION_LIBRARY=C:\tmp1\grpc\my_build_out\lib\grpc++_reflection.lib ^
    -DGRPC_GRPC++_LIBRARY=C:\tmp1\grpc\my_build_out\lib\grpc++.lib ^
    -DGRPC_CPP_PLUGIN=C:\tmp1\grpc\my_build_out\bin\grpc_cpp_plugin.exe ^
    -DCPPREST_INCLUDE_DIR=C:\tmp1\cpprestsdk\my_build_out\include ^
    -DCPPREST_LIB=C:\tmp1\cpprestsdk\my_build_out\lib\cpprest142_2_10.lib ^
    -DOPENSSL_ROOT_DIR=C:\tmp1\openssl ^
    -DCMAKE_CXX_FLAGS="-D_NO_PPLXIMP -D_NO_ASYNCRTIMP -IC:\tmp1\grpc\my_build_out\include -IC:\tmp1\grpc\third_party\abseil-cpp" ^
    -DBUILD_SHARED_LIBS=OFF ^
    ..

用 vs 打开 build\cpprestsdk-root.sln 编译

其他说明

  • 自己工程需要添加编译选项:-D_NO_PPLXIMP -D_NO_ASYNCRTIMP
  • proto 定义文件中有中文,生成的 *.grpc.pb.cc 文件,在 vs2019 下会编译错误。把操作系统编码设置成默认 utf-8
  • windows 下 c 运行时库有 /MT、/MTd、/MD、/MDd 4 种,以上编译要对好版本
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fananchong2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值