Compile on Windows

NOTE: These instructions are for compiling the development branch.

NOTE: Boost now needs to be at least version 1.71.

You can also compile with meson instead of cmake. Meson allows using linux to generate windows binaries (“cross-compiling”).

  1. Download and install 64-bit cygwin (setup-x86_64.exe). Make sure you include the following packages:

    (Cygwin package versions are from 5/20202. Newer versions may work, but see special version notes below)

    package version
    cmake 3.14.5-1
    cmake-debuginfo 3.14.5-1
    cmake-doc 3.14.5-1
    cmake-gui 3.14.5-1
    git 2.21.0-1
    make 4.3-1
    mingw64-x86_64-boost 1.66.0-1
    mingw64-x86_64-gcc-core 9.2.0-2
    mingw64-x86_64-gcc-g++ 9.2.0-2

    For RevStudio you will also need:

    package version
    mingw64-x86_64-atk1.0 2.26.1-1
    mingw64-x86_64-bzip2 1.0.6-4
    mingw64-x86_64-cairo 1.14.12-1
    mingw64-x86_64-fribidi 0.19.7-1
    mingw64-x86_64-gdk-pixbuf2.0 2.36.11-1
    mingw64-x86_64-glib2.0 2.54.3-1
    mingw64-x86_64-gtk2.0 2.24.31-1
    mingw64-x86_64-gtkmm2.4 2.24.5-1
    mingw64-x86_64-pango1.0 1.40.14-1

    Notes about the versions:

    Boost and CMake:

    It’s important that the version of Boost that you use be supported by the version of CMake that you use. You can check this by going to the package source for the CMake version you’re using e.g. 3.14.5. Search for _Boost_KNOWN_VERSIONS and ensure your boost version appears in the list.

  2. Retrieve the RevBayes sources.

    1. Open a cygwin terminal window
    2. Clone the git repository:
       git clone revbayes
  3. Compile RevBayes.

    1. Open a cygwin terminal window and go to the RevBayes source directory if you haven’t already done so, e.g.,
       cd revbayes
    2. Next, go into the projects and then the cmake subdirectory:
       cd projects/cmake
    3. Now you can either build the standard version
       bash -DCMAKE_TOOLCHAIN_FILE=../mingw64_toolchain.cmake

      or the RevStudio version

       bash -DCMAKE_TOOLCHAIN_FILE=../mingw64_toolchain.cmake -cmd true
  4. Library whack-a-mole

    When you try to run the executable you will likely get an error about missing libraries.

    Make a new directory and put the executable in it.

    Then find the library from the error message in /usr/x86_64-w64-mingw32/sys-root/mingw/bin/ and copy it to the directory you put the exectuable in. Repeat this until you stop getting error messages.

    At the time this was written (RevBayes v1.1.0), this consisted of:

    • iconv.dll
    • libatk-1.0-0.dll
    • libboost_filesystem-mt.dll
    • libboost_program_options-mt.dll
    • libboost_system-mt.dll
    • libbz2-1.dll
    • libcairo-2.dll
    • libexpat-1.dll
    • libffi-6.dll
    • libfontconfig-1.dll
    • libfreetype-6.dll
    • libgcc_s_seh-1.dll
    • libgdk_pixbuf-2.0-0.dll
    • libgdk-win32-2.0-0.dll
    • libgio-2.0-0.dll
    • libglib-2.0-0.dll
    • libgmodule-2.0-0.dll
    • libgobject-2.0-0.dll
    • libgtk-win32-2.0-0.dll
    • libharfbuzz-0.dll
    • libintl-8.dll
    • libpango-1.0-0.dll
    • libpangocairo-1.0-0.dll
    • libpangoft2-1.0-0.dll
    • libpangowin32-1.0-0.dll
    • libpcre-1.dll
    • libpixman-1-0.dll
    • libpng16-16.dll
    • libstdc++-6.dll
    • libwinpthread-1.dll
    • zlib1.dll