This project is based on the Web Browser Engineering book by Pavel Panchekha & Chris Harrelson It can be found online here: https://browser.engineering/
While the book is written in python, I was interested in learning a new language. I messed around with golang long enough to find out it wouldn't be suited twords making a browser, and seeing as my end goal is to use what I learn to contribute to the Ladybird browser project, I decided to switch to C++.
You can find the Ladybird Browser project here: https://github.com/LadybirdBrowser/ladybird
AI was used for modifying application layouts in Qt and doing code reviews. Code reviews can be viewed here: https://github.com/pquam/Quamium/commits/main/codereview.md I wrote all the application code my self.
The project is built with CMake and a Qt-based toolchain. You will need:
- CMake 3.16 or newer
- A C++17 compiler (GCC, Clang, or MSVC)
- Qt 6 (Widgets and LinguistTools components); ensure the
gcc_64,msvc2019_64, etc. kit you installed includesQt6Widgets - Boost (system component)
- OpenSSL (SSL and Crypto libraries)
On Ubuntu or Debian you can install the common prerequisites with:
sudo apt update
sudo apt install build-essential cmake ninja-build qt6-base-dev \
libboost-system-dev libssl-devYou may install Qt through the Qt Online Installer, your package manager, or Qt Creator. Point CMake at the Qt installation by setting CMAKE_PREFIX_PATH, Qt6_DIR, or the -DQT_HOST_PATH argument as shown below.
Create an out-of-tree build directory and run CMake. The CMAKE_PREFIX_PATH argument should reference the kit directory that contains the Qt libraries (for example, /home/<user>/Qt/6.10.0/gcc_64):
cmake -S . -B build -G Ninja \
-DCMAKE_PREFIX_PATH=/path/to/Qt/6.10.0/gcc_64
cmake --build buildYou may omit -G Ninja to use your default generator (Makefiles, Visual Studio, etc.). Repeat the cmake --build command whenever you want to rebuild.
The executable is produced as build/Quamium (or Quamium.exe on Windows). Run it directly:
./build/QuamiumTo install into a prefix (e.g., /usr/local), run cmake --install build.
Translations are defined in Quamium_en_US.ts. If you edit UI strings, refresh the translation catalog with:
cmake --build build --target lupdate
cmake --build build --target lrelease- If CMake cannot find Qt, verify the path passed to
CMAKE_PREFIX_PATHpoints at the correct kit directory. - Boost and OpenSSL are linked dynamically by default. Ensure the development headers and libraries are available on your system.
- Qt Creator and CLion both detect the CMake project automatically; simply open the repository folder and configure a kit/profile pointed at your Qt installation.