使用VS2015编译grpc_1.3.1
环境:
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的更多相关文章
- VS2015编译boost1.62
VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...
- VS2015编译Qt5.7.0生成支持XP的静态库(很不错)
一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...
- 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 ...
- 用VS2015编译sqlcipher
简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...
- 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集
上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...
- VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时
之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...
- vs2015编译caffe
有些时候,需要在python3的环境下import caffe,需要用vs2015在python3的环境下,编译pycaffe. microsoft的windows版本的caffe,依赖的库Nuget ...
- 使用VS2015编译xlslib库
环境: win7_x64,VS2015 开始: 一.下载xlslib库 xlslib-package-2.5.0.zip 解压到一个指定目录,如E:\library\xlslib-package-2. ...
- [转][JSBSim]使用VS2015编译JSBSim
转自csdn原文:https://blog.csdn.net/yu_lei_/article/details/81463187 请大家去看原文,原文有图片和资源,本文仅供本人参考 权威参考:http: ...
随机推荐
- [shell]输出内容到剪切板
commandline和GUI下的clipboard的交互Mac下echo $PATH | pbcopy,copy to clipboardecho "$(pbpaste -Prefer t ...
- 测试是否支持辨别tex公式
1.首先启动博客园公式编写支持(latex) 2.编写公式 3.结果 $a+b=5$ $c+d=7$
- 《温故而知新》JAVA基础四
类的封装 定义:将类的一些信息隐藏起来,不允许外部的程序直接的访问,而是通过该类提供的一些方法来获取 好处:只能通过特定的法方法访问数据,保护了数据, 实现封装的步骤: 修改属性的可见性:(一般类属性 ...
- 浅谈Static
A: 使用场景 static可以修饰成员变量和成员方法. 什么时候使用static修饰成员变量? 加static修饰成员的时候,这个成员会被类的所有对象所共享.一般我们把共性数据定义为静态的变量 什么 ...
- .gitignore无效
有个别文件不想跟踪,比如pycharm的配置文件. 但是这个文件已经被git跟踪的情况下,再加入.gitignore是无效的. 只需要: git rm --cached .idea/workspace ...
- .net正则IP加端口,并返回IP加端口
public string GetIp(string url) { var reg = new Regex(@"\d{2,3}([.]\d{1,3}){3}:\d{2,5}"); ...
- jQuery中的 $.ajax的一些方法
1. $(document).ajaxConplete(function(){}) 1.8版本之后,只能绑定到document元素上:1.8版本之前,可以帮到其他元素上 当$.ajax执行完成之后,执 ...
- jQuery 省份选择
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- mvn dependency:tree的用法
一.参考文档 https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-t ...
- vmware 安装 centos7 记录笔记
1, 安装centos 7, 到阿里云镜像下载centos 7 1.虚拟机的创建: 打开安装好的VMware (如果大家安装的VMware是英文版的也没关系,对号入座即可),选择“文件--->新 ...