- Git — for cloning the repository
- MSYS2 — download here (provides
pacman, a C++ compiler, CMake, and Qt6 all in one place)
Open the MSYS2 MinGW 64-bit terminal (not the plain MSYS2 terminal) and run:
pacman -SyuRestart the terminal if prompted, then run:
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-qt6-base mingw-w64-x86_64-qt6-toolsThis installs:
mingw-w64-x86_64-gcc— C++ compilermingw-w64-x86_64-cmake— CMakemingw-w64-x86_64-qt6-base— Qt6 Widgets and core modulesmingw-w64-x86_64-qt6-tools— Qt's dev tools (includesmoc)
To ensure standard terminals (like Git Bash, VSCode, or Command Prompt) and IDEs can find these tools, you must add the MinGW binaries to your system's PATH.
- Open Windows Search and type Edit the system environment variables.
- Click Environment Variables... at the bottom.
- Under System Variables (or User Variables), find
Pathand click Edit. - Add the following path:
C:\msys64\mingw64\bin - Click OK and restart any open terminals or IDEs.
git clone https://github.com/codyn06/CookBook
cd CookBook- Download the dataset from https://recipenlg.cs.put.poznan.pl/.
- Unzip it into the project root. This should create a directory called
dataset/containingfull_dataset.csv.
Run these from the MSYS2 MinGW 64-bit terminal (or a regular terminal if mingw64/bin is on your PATH):
mkdir build
cd build
cmake .. -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH="C:/msys64/mingw64"
cmake --build . --target CookBook -j 16Replace 16 with your CPU's thread count (terminal commands below):
- PowerShell:
$env:NUMBER_OF_PROCESSORS - Command Prompt:
echo %NUMBER_OF_PROCESSORS% - MSYS2/Git Bash:
nproc
./CookBook.exeCookBook/
├── dataset/ # Raw dataset (gitignored — see Setup)
│ └── full_dataset.csv
├── src/
│ ├── main.cpp
│ ├── data/ # CSV loading & parsing
│ ├── gui/ # Qt interface (IngredientInput, FlowLayout, etc.)
│ └── structures/
│ ├── Structure.h # Shared interface for hash map & graph
│ ├── graph/ # Bipartite graph implementation
│ └── hashmap/ # Inverted hash map implementation
├── tests/
├── .gitignore
├── CMakeLists.txt
└── README.md