Building Binary Valentine

Binary Valentine is available as pre-built binary releases on the GitHub project page. However, you can build the project yourself from the source code. Note that the following compilers are currently supported:

  • Windows 10/11, MSVC 2022 (Visual Studio solution and CMake build are provided)
  • Linux, GCC 13.0 (CMake build)
  • Linux, Clang 16 (CMake build)

Dependencies

There are several dependencies which are required to build Binary Valentine. Some dependencies are bundled, and you do not need to download and install them manually:

  • pe_bliss library to load Portable Executable files. This library is included in the Binary Valentine GitHub repository as a submodule, so you do not need to install it manually. When cloning the repository, Git will download the submodule automatically for you.
  • fmt library. It is included in the project external folder.
  • utfcpp library. It is included in the project external folder.

Some dependencies are required and must be pre-installed and pre-built:

  • Boost libraries (at least 1.78.0). You will need the following libraries to be pre-built and available: filesystem, locale, system, program_options. There are also several header-only libraries which should be present (asio, pfr, predef).
  • (Linux only) Pre-built and pre-installed liburing.

For building the GUI, you will need a Qt library, version 6.5 or newer, built with the QML, Qt.Quick, Qt.Quick.Dialogs and Qt.Quick.Layouts modules.

Windows

To build Binary Valentine for Windows, you can use the binary_valentine.sln Visual Studio 2022 solution file. You will need to edit the common.props file and set the correct path to the Boost libraries on your system.

Visual Studio solution does not include the GUI build, and to build the GUI, you can instead use the CMake solution with the Qt Creator (see below).

CMake (Windows or Linux)

You can build Binary Valentine using CMake for both Windows and Linux.

Simple example of building the x64 Debug version of Binary Valentine on Linux or Windows:

# Navigate to the Binary Valentine directory, then execute:
mkdir build
cd build
cmake ../
cmake --build .

# You will find the build artifacts in the "bin" subfolder.

Build release version on Windows with statically linked MSVC runtime and all libraries:

# Set path to your pre-build boost libraries
set BOOST_ROOT=C:\Libs\boost_1_82_0\stage
set BOOST_INCLUDEDIR=C:\Libs\boost_1_82_0

mkdir build
cd build
cmake ../ -DBINARY_VALENTINE_STATIC_MSVC_RUNTIME=1
cmake --build . --config Release

Build release version on Linux with shared external libraries (boost, uring) and statically linked pe_bliss2:

mkdir build
cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release
cmake --build .

GUI build

To build the GUI, you need to enable the BINARY_VALENTINE_WITH_UI CMake option, which is disabled by default. Then, depending on the Qt build you are using, you might need to change other options as well.

For fully static build, no other options should be changed.

For dynamic builds on Windows, set the BINARY_VALENTINE_STATIC_MSVC_RUNTIME option to 0.

You can also load the root CMakeLists.txt into Qt Creator to build the GUI executable.