DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

环境:

  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=%1%
::x86,x64
set PLATFORM=%2%
set OUTPUT_PATH=%3%
set CMAKE_PATH=%4%

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=0 %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=0                      生成静态库
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=0 %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

 

 

也可直接用下面一个脚本

@echo off
::Release,Debug,RelWithDebInfo
set CMAKE_BUILD_TYPE=Release
::x86,x64
set PLATFORM=x86
set OUTPUT_PATH=%CURRENT_DIR%\x86\bin\
set CMAKE_PATH=%CURRENT_DIR%\..\

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=0 %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=0   生成静态库
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=0 %CMAKE_PATH%
nmake grpc grpc++ grpc_cpp_plugin protoc

posted on   DoubleLi  阅读(875)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2012-07-04 Create和CreateEx 区别
2012-07-04 关于OnOK()、OnCancel()、OnClose()、OnDestroy() 模式对话框 非模式对话框
2012-07-04 VC中句柄、指针、ID之间的转换
2012-07-04 在OnPaint中必须调用一次BeginPaint和EndPaint,且也只能调用一次。(上) .
2012-07-04 在对话框中设置背景的三种方法 .
点击右上角即可分享
微信分享提示