Skip to content
Snippets Groups Projects
index.md 4.75 KiB
Newer Older
  • Learn to ignore specific revisions
  • +++
    title = "Windows"
    
    weight = 50
    
    +++
    
    ## Build under Windows
    
    
    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.
    
    Mikhail Svechnikov's avatar
    Mikhail Svechnikov committed
    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.
    
    
    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.
    
    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:
    
    $ 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
    
    ```
    
    C:\Program Files\Python39\Scripts\
    C:\Program Files\Python39\
    C:\opt\x64\include
    C:\opt\x64\lib
    C:\Program Files\CMake\bin
    
    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"
    
    
    AlQuemist's avatar
    AlQuemist committed
    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
    
    
    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
    
    
    AlQuemist's avatar
    AlQuemist committed
    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. ..
    
    
    echo "## BUILD START:" %time%
    cmake --build . --config Release --parallel 8
    
    echo "## BUILD END:" %time%
    
    ctest -C Release --parallel 8 --output-on-failure
    ```