环境:

  win7_x64,VS2015

开始:

一、安装工具

  1. 安装cmake

  2. 安装ActivePerl

  3. 安装golang

  4. 安装nasm

  验证安装是否安装成功:

  cmake -version

  perl -version

  go version

  nasm -v

如果出现错误,请检查是否安装成功;若安装成功,则需要检查安装目录是否添加到环境变量path中。

二、下载源码

  1. grpc-1.3.1.tar.gz          解压到D:/grpc-1.3.1

  2. benchmark-1.1.0.tar.gz      解压到D:/grpc-1.3.1/grpc-1.3.1/third_party/benchmark

  3. boringssl-master.zip         解压到D:/grpc-1.3.1/grpc-1.3.1/third_party/boringssl

  4. c-ares-cares-1_12_0.tar.gz     解压到D:/grpc-1.3.1/grpc-1.3.1/third_party/cares/cares

  5. gflags-2.2.0.tar.gz          解压到D:/grpc-1.3.1/grpc-1.3.1/third_party/gflags

  6. protobuf-3.0.0.tar.gz        解压到D:/grpc-1.3.1/grpc-1.3.1/third_party/protobuf

  6. zlib-1.2.11.tar.gz          解压到D:/grpc-1.3.1/grpc-1.3.1/third_party/zlib

  除grpc外,其他的第三方库可以下载其他的版本,只要按照上面的路径解压到相应的目录即可。注意一定要将c-ares-cares-1_12_0.tar.gz解压到D:/grpc-1.3.1/grpc-1.3.1/third_party/cares/cares目录,否是编译会报错。

三、编译

  1. 编写脚本do_build.bat

@echo off
::Release,Debug,RelWithDebInfo
set CMAKE_BUILD_TYPE=%%
::x86,x64
set PLATFORM=%%
set OUTPUT_PATH=%%
set CMAKE_PATH=%% if not exist %PLATFORM% (
mkdir %PLATFORM%
)
cd %PLATFORM% if %PLATFORM% == x86 (
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
)
if %PLATFORM% == x64 (
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" amd64
) echo cmake -G "NMake Makefiles" -D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% -D EXECUTABLE_OUTPUT_PATH=%OUTPUT_PATH% -D LIBRARY_OUTPUT_PATH=%OUTPUT_PATH% -D CMAKE_C_FLAGS_RELEASE="/MT /WX-" -D CMAKE_CXX_FLAGS_RELEASE="/MT /WX-" -D BUILD_SHARED_LIBS= %CMAKE_PATH%
::CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE%    构建类型(Release,Debug,RelWithDebInfo)
::EXECUTABLE_OUTPUT_PATH=%OUTPUT_PATH%  可执行程序的路径
::LIBRARY_OUTPUT_PATH=%OUTPUT_PATH% 静态库的路径
::CMAKE_C_FLAGS_RELEASE="/MT /WX-"   使用静态运行时库,禁止将警告视为错误
::CMAKE_CXX_FLAGS_RELEASE="/MT /WX-"   使用静态运行时库,禁止将警告视为错误
::BUILD_SHARED_LIBS=   生成静态库
cmake -G "NMake Makefiles" -D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% -D EXECUTABLE_OUTPUT_PATH=%OUTPUT_PATH% -D LIBRARY_OUTPUT_PATH=%OUTPUT_PATH% -D CMAKE_C_FLAGS_RELEASE="/MT /WX-" -D CMAKE_CXX_FLAGS_RELEASE="/MT /WX-" -D BUILD_SHARED_LIBS= %CMAKE_PATH%
nmake grpc grpc++ grpc_cpp_plugin protoc

  主要作用是根据传入的参数生成nmake文件,其中"/MT /WX-"是传递给cl编译器的参数,分别为"使用静态运行时库"和"禁止将警告视为错误"。这个有个技巧如果想要将其他的参数传递给编译器,只需要在后面添加即可。

  2. 编写脚本build_x64.bat

@echo off

set CURRENT_DIR=%~dp0
set CMAKE_BUILD_TYPE=Release
set PLATFORM=x64
set OUTPUT_PATH=%CURRENT_DIR%/x64/bin
set CMAKE_PATH=%CURRENT_DIR%/../../ call do_build.bat %CMAKE_BUILD_TYPE% %PLATFORM% %OUTPUT_PATH% %CMAKE_PATH% @pause

  生成Release x64平台库文件

  3. 编写脚本build_x86.bat

@echo off

set CURRENT_DIR=%~dp0
set CMAKE_BUILD_TYPE=RelWithDebInfo
set PLATFORM=x86
set OUTPUT_PATH=%CURRENT_DIR%/x86/bin
set CMAKE_PATH=%CURRENT_DIR%/../../ call do_build.bat %CMAKE_BUILD_TYPE% %PLATFORM% %OUTPUT_PATH% %CMAKE_PATH% @pause

  生成Release x86平台库文件

  4. 开始编译

  将build_x64.bat、build_x86.bat和do_build.bat脚本,拷贝到D:/grpc-1.3.1/grpc-1.3.1/cmake目录下

  运行build_x64.bat和build_x86.bat进行编译

所有资源下载链接:http://pan.baidu.com/s/1pL8sOcz 提取密码vm8v

使用VS2015编译grpc_1.3.1的更多相关文章

  1. VS2015编译boost1.62

    VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...

  2. VS2015编译Qt5.7.0生成支持XP的静态库(很不错)

    一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...

  3. Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)

    Win7 64位系统下通过VS2015编译好的最新的OpenSSL(1.0.2j)所有八个版本的链接库, 包含以下八个版本: 1.32位.debug版LIB: 2.32位.release版LIB: 3 ...

  4. 用VS2015编译sqlcipher

    简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...

  5. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  6. VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时

    之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...

  7. vs2015编译caffe

    有些时候,需要在python3的环境下import caffe,需要用vs2015在python3的环境下,编译pycaffe. microsoft的windows版本的caffe,依赖的库Nuget ...

  8. 使用VS2015编译xlslib库

    环境: win7_x64,VS2015 开始: 一.下载xlslib库 xlslib-package-2.5.0.zip 解压到一个指定目录,如E:\library\xlslib-package-2. ...

  9. [转][JSBSim]使用VS2015编译JSBSim

    转自csdn原文:https://blog.csdn.net/yu_lei_/article/details/81463187 请大家去看原文,原文有图片和资源,本文仅供本人参考 权威参考:http: ...

随机推荐

  1. IdentityServer4支持的授权类型以及组合

    支持的授权类型: implicit hybrid authorization_code client_credentials password 支持的组合: implicit implicit,cli ...

  2. 源码mysql-5.7.23在cmake时出现的小问题

    我是写的脚本安装mysql,cmake的步骤,另外用了一个小脚本,然后在脚本中用的bash执行的cmake命令,所以导致cmake实在子shell中执行的, 如果你是在命令行上一步一步的执行,报这个错 ...

  3. Jfinal集成Spring

    JFinal框架也整合了spring框架,下面实现JFinal怎么去配置Spring框架.在JFinal中整合Spring使用到的类是SpringPlugin和IocInterceptor类 Spri ...

  4. oracle数据库 concat 与 ||

    1.简述: 通过几条sql语句来引入此问题 先新建一张表,插入几条数据,如下: CREATE TABLE tab1 (col1 VARCHAR2(6), col2 CHAR(6), col3 VARC ...

  5. [easyUI] 树形菜单 tree

    0.效果图 1. 一个id为mytree的无序列表 <h2>easy UI Tree</h2> <ul id="mytree"></ul& ...

  6. Android查看appPackage和Activity的多种方法

    方法一 有源码的情况直接打开AndroidManifest.xml文件,文件会有package信息 android.intent.action.MAIN决定应用程序最先启动的Activity andr ...

  7. part4:素数判别

    法一: √n判别 这个的话就是暴力了吧,不过只能判别单个数是不是质数,而且很大的话会爆 //没有代码qwq(不想写 法二:埃式筛法 O(nloglogn)判别 直接代码好不啦: ],n,num; ]; ...

  8. js 把一个对象赋值给另一个对象会指向同一个内存地址

    先看一段代码: var arr1 = [1,2,3]; var arr2 = arr1; arr2.push(4); console.log(arr1)//[1,2,3,4] 为什么会输出 的是[1, ...

  9. Python中的lambda的简单介绍

    在学习python的过程中,lambda的语法经常出现,现在将它整理一下,以备日后查看. 1.lambda是什么? 举个例子如下: func=lambda x:x+1 print(func(1)) p ...

  10. 【转载】关于nginx以及内核参数的配置

    nginx应用总结(2)--突破高并发的性能优化  原文地址:https://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到ngin ...