Newer
Older

Wuttke, Joachim
committed
The following instructions have been tested under Windows 10 Pro.
Last full test from our side was for release 1.19.
### Prerequisites
#### Visual Studio
Download **Visual Studio Community Edition** from from the official website [visualstudio.microsoft.com](https://visualstudio.microsoft.com)
The current build instructions are tested with Visual Studio 2022.
Download Qt from from the official website [qt.io](https://www.qt.io/download-open-source)
> Make sure to choose the open source version of Qt and download the online installer.

Wuttke, Joachim
committed
Select the latest Qt version with long-time support (LTS) and open the sub tree.
To build BornAgain, only the 'MSVC 2019 64-bit' component is needed.
Qt Installer Framework is required for creating the installer executable.

Wuttke, Joachim
committed
Make a symbolic link to the directory corresponding to the current Qt version:
if Qt 6.y.z installed in `C:\Qt\6.y.z`, then in Windows `cmd` (with administrative rights) execute:

Wuttke, Joachim
committed
$ mklink /D "C:\Qt\current" "C:\Qt\6.y.z"
$ mklink /D "C:\Qt\msvc" "C:\Qt\6.y.z\msvc2019_64"
```
#### CMake
Download the **Windows x64 Installer** from the official website [cmake.org/download](https://cmake.org/download)
#### Python + Packages
Python and some Python modules must be installed, as described in
[Python on Windows](/deploy/py/win).
If you want to re-build the Python-API with SWIG, download and install SWIG
from the official website
[swig.org/download.html](http://www.swig.org/download.html).
Installation instructions are at http://www.swig.org/Doc4.1/windows.html.
Unpack the ZIP file and add its folder to PATH (so e.g. `C:\swigwin-4.0.2`)
Download
- from https://computing.mlz-garching.de/download/WinLibs:
- libfftw3.win64.zip (fast Fourier transform)
- libtiff.win64.zip (Support for TIFF images)
- gsl_*_win64_shared.zip (GNU Scientific Library)
- boost_*.7z (C++ Library boost, including BZIP2 and ZLib)
- from https://jugit.fz-juelich.de/mlz/libcerf/-/releases
- from latest release > Asserts > Packages, cerfcpp-*-win64.zip
- from https://jugit.fz-juelich.de/mlz/libformfactor/-/releases/
- from latest release > Asserts > Packages, formfactor-*-win64.zip
Create the folders
`C:\opt\x64\include`\
`C:\opt\x64\lib`
and paste the corresponding content from the ZIP files in those two folders.
#### System Enviroment Variables
After those installations your `PATH` should contain
```

Wuttke, Joachim
committed
C:\Qt\6.y.z\msvc2019_64\bin
C:\Program Files\Python39\Scripts\
C:\Program Files\Python39\
C:\opt\x64\include
C:\opt\x64\lib
C:\Program Files\CMake\bin
C:\Program Files (x86)\NSIS

Wuttke, Joachim
committed
With all prerequisites completed, you should be able to build and test BornAgain in a PowerShell.
In there, execute
```
$OPTLIBS = "C:/opt/x64"
$FFTW3_INCLUDE_DIR = "$OPTLIBS/include"
$FFTW3_LIB = "$OPTLIBS/lib/libfftw3-3.lib"
$QTDIR = "C:/Qt/current/msvc2019_64"
$QTCMake_DIR = "$QTDIR/lib/cmake"
$BUILD_DIR = "build"
mkdir -Force "$BUILD_DIR"
cd "$BUILD_DIR"
cmake -G "Visual Studio 17 2022" -A x64 -T host=x64 -DQTDIR="$QTDIR" -DQt6_DIR="$QTCMake_DIR/Qt6" -DQt6Test_DIR="$QTCMake_DIR/Qt6Test" -DFFTW3_INCLUDE_DIR="$FFTW3_INCLUDE_DIR" -DFFTW3_LIBRARY="$FFTW3_LIB" -DCMAKE_INCLUDE_PATH="$OPTLIBS/include" -DCMAKE_LIBRARY_PATH="$OPTLIBS/lib" -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -B. ..
cmake --build . --config Release
Ammar Nejati
committed
ctest -C Release --parallel 8 --output-on-failure
```
<br>
<details> <summary> <b> Build with Ninja (Experimental) </b> </summary>
Compilation might be accelerated if Ninja is used as a build system.
Download the Ninja binary for Windows from [ninja-build.org](https://ninja-build.org). Add the binaries to a directory in your `PATH`; e.g. `C:\Program Files\ninja`.
To use Ninja as the build system, the compilation cannot be performed in a PowerShell but in the Visual Studio Shell **x64 Native Tools Command Prompt for VS 2019** which you can search for in the start menu.
Use the following commands to build BornAgain:
```
set OPTLIBS=C:/opt/x64
set FFTW3_INCLUDE_DIR=%OPTLIBS%/include
set FFTW3_LIB=%OPTLIBS%/lib/libfftw3-3.lib
set QTDIR=C:/Qt/current/msvc2019_64
set QTCMake_DIR=%QTDIR%/lib/cmake
set BUILD_DIR=buildnj
mkdir "%BUILD_DIR%"
cd "%BUILD_DIR%"
cmake --version
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DQTDIR="%QTDIR%" -DQt6_DIR="%QTCMake_DIR%/Qt6" -DQt6Test_DIR="%QTCMake_DIR%/Qt6Test" -DFFTW3_INCLUDE_DIR="%FFTW3_INCLUDE_DIR%" -DFFTW3_LIBRARY="%FFTW3_LIB%" -DCMAKE_INCLUDE_PATH="%OPTLIBS%/include" -DCMAKE_LIBRARY_PATH="%OPTLIBS%/lib" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -B. ..
Ammar Nejati
committed
echo "## BUILD START:" %time%
cmake --build . --config Release --parallel 8
echo "## BUILD END:" %time%
ctest -C Release --parallel 8 --output-on-failure
```