50 lines
1.7 KiB
Markdown
50 lines
1.7 KiB
Markdown
# Building Thrift using Docker for Windows
|
|
|
|
The build image is very large (just under 30GB) so plan accordingly.
|
|
Once Microsoft supports build tools in nano, it should get better.
|
|
|
|
Install Docker for Windows and switch to Windows container mode.
|
|
|
|
Pull from docker hub:
|
|
|
|
PS C:\> docker pull thrift/thrift-build:msvc2017
|
|
|
|
or build in a docker for windows environment:
|
|
|
|
PS C:\Thrift> docker build -t thrift/thrift-build:msvc2017 -f build\docker\msvc2017\Dockerfile build\
|
|
|
|
The following directories are used inside the container:
|
|
|
|
C:\Build the out-of-tree build directory
|
|
C:\Install the install target directory
|
|
C:\Thrift the source tree
|
|
|
|
You can override these as docker volumes if desired.
|
|
|
|
### Compiler
|
|
|
|
To build a portable windows thrift compiler (with a statically linked
|
|
runtime) and get it placed into C:\install:
|
|
|
|
docker run -v C:\thrift:C:\thrift^
|
|
-v C:\install:C:\install^
|
|
--rm -t thrift/thrift-build:msvc2017^
|
|
C:\thrift\build\docker\msvc2017\build-compiler.bat
|
|
|
|
The end result is a portable windows thrift compiler located at
|
|
|
|
C:\Install\bin\thrift.exe
|
|
|
|
If you run it through the [Dependency Walker](http://www.dependencywalker.com/)
|
|
you will see it only depends on KERNEL32.DLL which means the runtime is statically
|
|
linked, so the executable is portable and self-contained. This is how the
|
|
windows thrift compiler is built for each Apache Thrift release.
|
|
|
|
### Libraries
|
|
|
|
To build, test everything and get the C++ SDK placed into C:\install:
|
|
|
|
docker run -v C:\thrift:C:\thrift^
|
|
-v C:\install:C:\install^
|
|
-m 4096 --rm -t thrift/thrift-build:msvc2017^
|
|
C:\thrift\build\docker\msvc2017\build.bat |