Update Windows building instructions for proto3b1

This commit is contained in:
Eric Anderson 2015-09-24 15:27:26 -07:00
parent ea4eed57b9
commit d04994f044
3 changed files with 53 additions and 7 deletions

View File

@ -48,8 +48,8 @@ environment variables will be used when building grpc-java.
Protobuf installs to ``/usr/local`` by default. Protobuf installs to ``/usr/local`` by default.
For Visual C++, please refer to the [Protobuf README](https://github.com/google/protobuf/blob/master/vsprojects/readme.txt) For Visual C++, please refer to the [Protobuf README](https://github.com/google/protobuf/blob/master/cmake/README.md)
for how to compile Protobuf. for how to compile Protobuf. gRPC-java assumes a Release build.
#### Linux and MinGW #### Linux and MinGW
If ``/usr/local/lib`` is not in your library search path, you can add it by running: If ``/usr/local/lib`` is not in your library search path, you can add it by running:
@ -73,7 +73,8 @@ Gradle to find protobuf:
``` ```
.\gradlew install ^ .\gradlew install ^
-PvcProtobufInclude=C:\path\to\protobuf-3.0.0-beta-1\src ^ -PvcProtobufInclude=C:\path\to\protobuf-3.0.0-beta-1\src ^
-PvcProtobufLibs=C:\path\to\protobuf-3.0.0-beta-1\vsprojects\Release -PvcProtobufLibs=C:\path\to\protobuf-3.0.0-beta-1\vsprojects\Release ^
-PtargetArch=x86_32
``` ```
Since specifying those properties every build is bothersome, you can instead Since specifying those properties every build is bothersome, you can instead
@ -81,11 +82,13 @@ create ``<project-root>\gradle.properties`` with contents like:
``` ```
vcProtobufInclude=C:\\path\\to\\protobuf-3.0.0-beta-1\\src vcProtobufInclude=C:\\path\\to\\protobuf-3.0.0-beta-1\\src
vcProtobufLibs=C:\\path\\to\\protobuf-3.0.0-beta-1\\vsprojects\\Release vcProtobufLibs=C:\\path\\to\\protobuf-3.0.0-beta-1\\vsprojects\\Release
targetArch=x86_32
``` ```
The build script will build the codegen for the same architecture as the Java By default, the build script will build the codegen for the same architecture as
runtime installed on your system. If you are using 64-bit JVM, the codegen will the Java runtime installed on your system. If you are using 64-bit JVM, the
be compiled for 64-bit, that means you must have compiled Protobuf in 64-bit. codegen will be compiled for 64-bit. Since Protobuf is only built for 32-bit by
default, the `targetArch=x86_32` is necessary.
### Notes for MinGW on Windows ### Notes for MinGW on Windows
If you have both MinGW and VC++ installed on Windows, VC++ will be used by If you have both MinGW and VC++ installed on Windows, VC++ will be used by

View File

@ -0,0 +1,43 @@
REM installer http://www.7-zip.org/a/7z1507-x64.exe
REM 7za is in http://www.7-zip.org/a/7z1507-extra.7z
REM Prerequisite: 7za.exe in current directory or PATH
set PROTOBUF_VER=3.0.0-beta-1
set CMAKE_NAME=cmake-3.3.2-win32-x86
if not exist "protobuf-%PROTOBUF_VER%\cmake\Release\" (
call :installProto
)
set PROTOCDIR=%cd%\protobuf-%PROTOBUF_VER%\cmake\Release\
goto :eof
:installProto
if not exist "%CMAKE_NAME%" (
call :installCmake
)
set PATH=%PATH%;%cd%\%CMAKE_NAME%\bin
powershell -command "& { iwr https://github.com/google/protobuf/archive/v%PROTOBUF_VER%.zip -OutFile protobuf.zip }"
7za X protobuf.zip
del protobuf.zip
pushd protobuf-3.0.0-beta-1\cmake
mkdir build
cd build
cmake -DBUILD_TESTING=OFF ..
msbuild /maxcpucount /p:Configuration=Release libprotoc.vcxproj
call extract_includes.bat
popd
goto :eof
:installCmake
powershell -command "& { iwr https://cmake.org/files/v3.3/%CMAKE_NAME%.zip -OutFile cmake.zip }"
7za X cmake.zip
del cmake.zip
goto :eof
REM Compile gRPC-Java with something like:
REM -PtargetArch=x86_32 -PvcProtobufLibs=%cd%\protobuf-3.0.0-beta-1\cmake\build\Release -PvcProtobufInclude=%cd%\protobuf-3.0.0-beta-1\cmake\build\include

View File

@ -153,7 +153,7 @@ binaries.all {
} }
addEnvArgs("LDFLAGS", linker.args) addEnvArgs("LDFLAGS", linker.args)
} else if (toolChain in VisualCpp) { } else if (toolChain in VisualCpp) {
cppCompiler.args "/EHsc", "/MD" cppCompiler.args "/EHsc", "/MT"
if (rootProject.hasProperty('vcProtobufInclude')) { if (rootProject.hasProperty('vcProtobufInclude')) {
cppCompiler.args "/I${rootProject.vcProtobufInclude}" cppCompiler.args "/I${rootProject.vcProtobufInclude}"
} }