Windows build » History » Version 45

« Previous - Version 45/98 (diff) - Next » - Current version
pospelov, 12 Sep 2013 15:41

Windows build

Experimental compilation under Windows using Mingw or Microsoft Visual Studio.
For whose who wnats to see the devil developers only.

Install packages for happier life
  • Atlassian SourceTree (v0.9.2.3)

  • Kate from KDE

  • far manager

  • WinSCP

  • Dependency Walker

First assure compilation of MinGW, then switch to Visual Studio recipe

Mingw build

Install Qt, cmake
  • Install Qt 5.1.0
Add to PATH C:\Qt\Tools\mingw48_32\bin;C:\Qt\Tools\mingw48_32\lib;C:\Qt\5.1.0\mingw48_32\bin;C:\Qt\Tools\QtCreator\bin

this will allow usage of mingw from any command line

  • install cmake by running cmake-

Install MinGW
  • We need full MinGW suite to compile latest libgsl. MinGW from Qt installtion want help.

download mingw-get-setup.exe installation manager from
run installer, there will be some pre selection of packages (from MinGW Base system, MSYS and GCC), should be enough
in the menu do Installation/Apply changes, then accept default C:\MinGW as an installation directory

Install Python and Co
  • Install Python

install through into C:/Python27

  • install numpy

from unofficial by running numpy-unoptimized-1.7.1.win32-py2.7.‌exe

  • install matplotlib

from by running matplotlib-1.2.1.win32-py2.7.exe

matplotlib can require dateutil, pyparsing from

(alternative install Anaconda pack (python + mingw + numpy) from ) Not checked!

Comment about installation of additional libraries

All further installations should end up in C:\opt\local

Install gsl
  • use previously installed MinGW to compile gsl

create empty directory c:\gsl-1.16
download source gsl-1.16.tar.gz from
copy unpacked directory to C:\mingw\msys\1.0\home\pospelov
run c:\mingw\msys\msys.bat which will bring command line prompt
there, navigate to c:\mingw\msys\1.0\home\pospelov\gsl-1.16

./configure --enable-static=yes --enable-shared=yes --prefix=/c/gsl-1.16
make install

copy directory "C:\gsl-1.16\include\gsl" to "C:\opt\local\include\gsl"
copy files libgsl-0.dll and libgslcblas-0.dll into "C:\opt\local\lib"

Install fftw3

from download
unpack archive somewhere
copy fftw3.h to C:\opt\local\include
copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local\lib

install BOOST
  • install zlib and bzip2

from into C:/opt/local/source/zlib-1.2.8
from into C:/opt/local/source/bzip2-1.0.6

  • Download and compile boost_1_54_0

from and unpack
bootstrap.bat mingw
b2 install --prefix=c:/opt/local toolset=gcc -sBZIP2_SOURCE="C:\opt\local\source\bzip2-1.0.6" -sZLIB_SOURCE="C:\opt\local\source\zlib-1.2.8" address-model=32 variant=release link=static,shared threading=single,multi
Move c:/opt/local/include/boost_1.54/boost directory into c:/opt/local/include/boost

  • Add c:\home\pospelov\development\git\BornAgain\lib;c:\opt\local\lib to PATH
Where we are?
  • At this point Qt creator Release, Debug builds are working

Core + Fit + UnitTests + FunctionalTests (not App, GUI)

  • cmake Release, Debug builds

cmake -G "MinGW Makefiles" ../BornAgain
mingw32-make -j4
mingw32-make check

or cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug ../BornAgain

MS Visual Studio build

Install VS.NET2012

Install En language pack
install "stop build on error" plugin

Comment about installation of additional libraries

All further installations should end up in C:\opt\local_vc110

Install gsl

succeeded only for static build using "gslhdrs step" mentioned in gsl.vc11.readme

Install fftw3

from download
unpack archive somewhere
copy fftw3.h to C:\opt\local_vc110\include
copy libfftw3-3.dll and libfftw3-3.def to C:\opt\local_vc110\lib
generate corresponding lib file

run "VS2012 x86 native tools command prompt"
run there "lib /def:libfftw3-3.def" to generate lib file

install BOOST
  • install zlib and bzip2

from into C:/opt/local_vc110/source/zlib-1.2.8
from into C:/opt/local_vc110/source/bzip2-1.0.6

Patch bzip2 installation (MSVC specific!)
Namely delete first line ("LIBRARY LIBBZ2") from file libbz2.def
This will remove unnecessary dependency from external bzip2 during later linking of boost libraries into other project

  • Download and compile boost_1_54_0

from and unpack
b2 install --prefix=c:/opt/local_vc110 -sBZIP2_SOURCE="C:\opt\local_vc110\source\bzip2-1.0.6" -sZLIB_SOURCE="C:\opt\local_vc110\source\zlib-1.2.8" variant=release link=static,shared threading=multi
Move c:/opt/local_vc110/include/boost_1.54/boost directory into c:/opt/local_vc110/include/boost

  • Add c:\opt\local_vc110\lib to PATH
Working with MSVC2012
  • generate project file

cmake -G "Visual Studio 11" -DCMAKE_INCLUDE_PATH=C:/opt/local_vc110/include -DCMAKE_LIBRARY_PATH=C:/opt/local_vc110/lib ../BornAgain
Open BornAgain.sln in Visual Studio

There will be several projects in the solution (INSTALL, ZERO_CHECK, etc), all are necessary. Select build type "Release" and do "BUILD/Build Solution"
Functional tests can be runned additionally by building "check" project

Where we are?
  • MSVC2012 Release, Debug builds are working for Core + Fit + UnitTests + FunctionalTests

Windows installer

  • Installer can be generated using both, MinGW and MSVC builds.
  • For the generation CMake -> CPack -> NSIS combination is used.
  • After build is complete, installer is generated using command

CPack -C Release

  • Only MSVC build based installer have been validated so far.
Generating installer
  • Install NSIS

install NSIS from

  • generate MSVC solution, build solution in Release mode and then generate installer

cmake -G "Visual Studio 11" -DCMAKE_INCLUDE_PATH=C:/opt/local_vc110/include -DCMAKE_LIBRARY_PATH=C:/opt/local_vc110/lib ../BornAgain
Run Build Solution from MSVC
CPack -C Release