• 使用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=%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%....VCvcvarsall.bat" x86
    )
    if %PLATFORM% == x64 (
        call "%VS140COMNTOOLS%....VCvcvarsall.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%x86in
    set CMAKE_PATH=%CURRENT_DIR%..

    if not exist %PLATFORM% (
    mkdir %PLATFORM%
    )
    cd %PLATFORM%

    if %PLATFORM% == x86 (
    call "%VS140COMNTOOLS%....VCvcvarsall.bat" x86
    )
    if %PLATFORM% == x64 (
    call "%VS140COMNTOOLS%....VCvcvarsall.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

  • 相关阅读:
    UVALive4727:jump
    UVALive
    UVA11795 Mega Man's Mission
    UVA4731:Cellular Network
    UVA11404:Palindromic Subsequence
    设计思路
    阅读计划
    上课未完成代码原因
    《人月神话》读后感
    《软件工程》第十一章总结
  • 原文地址:https://www.cnblogs.com/lidabo/p/7117110.html
Copyright © 2020-2023  润新知