内容简介:根据官网说明,安装下面的相关工具。Windows@rem You can also do just "git clone --recursive -b THE_BRANCH_YOU_WANT
今天倒腾windows下面grpc编译以及在qt下面如何简单实用
1.grpc的编译 工具 准备
根据官网说明,安装下面的相关工具。
Windows
To prepare for cmake + Microsoft Visual C++ compiler build
- Install Visual Studio 2015 or 2017 (Visual C++ compiler will be used).
- Install Git .
- Install CMake .
-
Install Active State Perl
(
choco install activeperl
) - required by boringssl -
Install Go
(
choco install golang
) - required by boringssl -
Install yasm
and add it to
PATH
(choco install yasm
) - required by boringssl -
(Optional) Install Ninja
(
choco install ninja
)
2.clone 代码库
Windows
@rem You can also do just "git clone --recursive -b THE_BRANCH_YOU_WANT https://github.com/grpc/grpc "
git clone --recursive -b https://github.com/grpc/grpc.git
cd grpc
@rem To update submodules at later time, run "git submodule update --init"
3.使用cmake编译
cmake: Windows, Using Visual Studio 2015 or 2017 (can only build with OPENSSL_NO_ASM). When using the "Visual Studio" generator, cmake will generate a solution (grpc.sln) that contains a VS project for every target defined in CMakeLists.txt (+ few extra convenience projects added automatically by cmake). After opening the solution with Visual Studio you will be able to browse and build the code.
@rem Run from grpc directory after cloning the repo with --recursive or updating submodules. md .build cd .build cmake .. -G "Visual Studio 14 2015" -DCMAKE_BUILD_TYPE=Release cmake --build .
由于需要debug版本,只需要将cmake的倒数第二步修改成即可。
cmake .. -G "Visual Studio 14 2015" -DCMAKE_BUILD_TYPE=Debug
编译过程很顺利,没有什么错误提示。
4.在qt中使用生成的debug以及release库
下面是自己一步一步尝试出来的使用的pro文件,在当前目录下面建立了staticlib文件夹以及子文件夹debug与release,分别放置debug以及release库。
自己没有找到具体include 的lib指导,自己慢慢摸索出来的,有蛮多的坑的。一些简单的说明
INCLUDEPATH += ../include 是拷贝grpc/include下面的所有的头文件
其他的包含库,只需要按照下面,拷贝生成目录下面对应的debug以及release文件即可
DEFINES += _WIN32_WINNT=0x600 是grpc需要的define
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = greeter TEMPLATE = app INCLUDEPATH += ../include # The following define makes your compiler emit warnings if you use # any feature of Qt which has been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 CONFIG(debug, debug|release) { LIBS += -L$$PWD/staticlib/debug/ -lcares PRE_TARGETDEPS += $$PWD/staticlib/debug/cares.lib LIBS += -L$$PWD/staticlib/debug/ -laddress_sorting PRE_TARGETDEPS += $$PWD/staticlib/debug/address_sorting.lib LIBS += -L$$PWD/staticlib/debug/ -lgpr PRE_TARGETDEPS += $$PWD/staticlib/debug/gpr.lib LIBS += -L$$PWD/staticlib/debug/ -lgrpc PRE_TARGETDEPS += $$PWD/staticlib/debug/grpc.lib LIBS += -L$$PWD/staticlib/debug/ -lgrpc++ PRE_TARGETDEPS += $$PWD/staticlib/debug/grpc++.lib LIBS += -L$$PWD/staticlib/debug/ -llibprotobufd PRE_TARGETDEPS += $$PWD/staticlib/debug/libprotobufd.lib LIBS += -L$$PWD/staticlib/debug/ -lssl PRE_TARGETDEPS += $$PWD/staticlib/debug/ssl.lib LIBS += -L$$PWD/staticlib/debug/ -lcrypto PRE_TARGETDEPS += $$PWD/staticlib/debug/crypto.lib LIBS += -L$$PWD/staticlib/debug/ -ldecrepit PRE_TARGETDEPS += $$PWD/staticlib/debug/decrepit.lib LIBS += -L$$PWD/staticlib/debug/ -lzlibstaticd PRE_TARGETDEPS += $$PWD/staticlib/debug/zlibstaticd.lib } else { LIBS += -L$$PWD/staticlib/release/ -lcares PRE_TARGETDEPS += $$PWD/staticlib/release/cares.lib LIBS += -L$$PWD/staticlib/release/ -laddress_sorting PRE_TARGETDEPS += $$PWD/staticlib/release/address_sorting.lib LIBS += -L$$PWD/staticlib/release/ -lgpr PRE_TARGETDEPS += $$PWD/staticlib/release/gpr.lib LIBS += -L$$PWD/staticlib/release/ -lgrpc PRE_TARGETDEPS += $$PWD/staticlib/release/grpc.lib LIBS += -L$$PWD/staticlib/release/ -lgrpc++ PRE_TARGETDEPS += $$PWD/staticlib/release/grpc++.lib LIBS += -L$$PWD/staticlib/release/ -llibprotobuf PRE_TARGETDEPS += $$PWD/staticlib/release/libprotobuf.lib LIBS += -L$$PWD/staticlib/release/ -lssl PRE_TARGETDEPS += $$PWD/staticlib/release/ssl.lib LIBS += -L$$PWD/staticlib/release/ -lcrypto PRE_TARGETDEPS += $$PWD/staticlib/release/crypto.lib LIBS += -L$$PWD/staticlib/release/ -ldecrepit PRE_TARGETDEPS += $$PWD/staticlib/release/decrepit.lib LIBS += -L$$PWD/staticlib/release/ -lzlibstatic PRE_TARGETDEPS += $$PWD/staticlib/release/zlibstatic.lib } LIBS += -lWs2_32 -ladvapi32 INCLUDEPATH += $$PWD/include DEFINES += _WIN32_WINNT=0x600 SOURCES += \ main.cpp \ mainwindow.cpp \ greeter_server.cc \ helloworld.grpc.pb.cc \ helloworld.pb.cc HEADERS += \ mainwindow.h \ helloworld.grpc.pb.h \ helloworld.pb.h \ greeter_client.h FORMS += \ mainwindow.ui
ok
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Introduction to Programming in Java
Robert Sedgewick、Kevin Wayne / Addison-Wesley / 2007-7-27 / USD 89.00
By emphasizing the application of computer programming not only in success stories in the software industry but also in familiar scenarios in physical and biological science, engineering, and appli......一起来看看 《Introduction to Programming in Java》 这本书的介绍吧!