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.
For Visual C++, please refer to the [Protobuf README](https://github.com/google/protobuf/blob/master/vsprojects/readme.txt)
for how to compile Protobuf.
For Visual C++, please refer to the [Protobuf README](https://github.com/google/protobuf/blob/master/cmake/README.md)
for how to compile Protobuf. gRPC-java assumes a Release build.
#### Linux and MinGW
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 ^
-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
@ -81,11 +82,13 @@ create ``<project-root>\gradle.properties`` with contents like:
```
vcProtobufInclude=C:\\path\\to\\protobuf-3.0.0-beta-1\\src
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
runtime installed on your system. If you are using 64-bit JVM, the codegen will
be compiled for 64-bit, that means you must have compiled Protobuf in 64-bit.
By default, the build script will build the codegen for the same architecture as
the Java runtime installed on your system. If you are using 64-bit JVM, the
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
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)
} else if (toolChain in VisualCpp) {
cppCompiler.args "/EHsc", "/MD"
cppCompiler.args "/EHsc", "/MT"
if (rootProject.hasProperty('vcProtobufInclude')) {
cppCompiler.args "/I${rootProject.vcProtobufInclude}"
}