| Build Platform | Status (tests only) |
|---|---|
| MSVC 2017 x64 | |
| Linux x64 |
Om is a collection of several mini tutorial about:
- c++, gamedev, linux, crossplatform
- Modern c++ IT technology (c++23, cmake-4.0+, gradle)
- Fun 🤣
- basic shell (bash, zsh) example
- basic c++ (terminal, strings, memory, error handling)
- basic gamedev (input, render2d - vulkan/gles, sound)
- multiplatform (Linux, windows, Mac OS, Android, iOS)
- 2d on top of OpenGL 2.0 ES (3.0 ES)
- 2d on top of Vulkan 1.3
- easy building with modern cmake
Om project uses a number of open source projects to work properly:
- SDL3 - best cross-platform low level game library
- Boost - best c++ system level libraries
- GLM - best c++ math library for gamedev
Om requires Cmake v4.0+ to build.
Install the dependencies to build tutorials.
# for llvm with libc++
sudo epm install libcxx-devel
sudo epm install libcxx-devel libcxx-static
# needed for libstdc++exp.a
sudo epm install libstdc++14-devel-static
# for SDL3 (deps)
sudo epm install libwayland-client-devel libwayland-server-devel libEGL-devel
sudo epm install libGL-devel
sudo epm install libalsa-devel libjack-devel
sudo epm install libpulseaudio-devel
sudo epm install libsndio7-devel
sudo epm install libdrm-devel
sudo epm install libgbm-devel
sudo epm install libwayland-egl-devel
sudo epm install libwayland-cursor-devel
sudo epm install libxkbcommon-devel
sudo epm install libunwind-devel
sudo epm install libusb-devel
sudo epm install libudev-devel
sudo epm install libdecor-devel
# for boost (deps)
sudo epm install libffi-devel
sudo epm install libssl-devel
# for Vulkan
sudo epm install libvulkan-devel
sudo epm install glslang
sudo epm install glslang-devel
sudo epm install glslc
# to install slangc - build it with VULKAN_SDK [./vulkansdk slangc -j 8]
# and add to .zshrc - source path_to_vk_sdk/setup-env.shsudo dnf install SDL3
sudo dnf install SDL3-static- To search package
#search by package name
epm search sdl3
# search by file name ending example: (++exp.a) in package
epm filesearch \\+\\+exp\\.a - To list package content
epm filelist <package>-
To search package
# search by package name dnf search SDL3 # search by file in package dnf provides /usr/lib/libSDL3.so # search by part of file name dnf provides "*/libSDL3.so"
-
To list package contents (files list)
dnf repoquery -l SDL3 rpm -ql SDL3
-
To show compile/link/version of installed version
sdl3-config --version sdl3-config --libs sdl3-config --static-libs
On Mac OS X for c++23 compiler you have to install latest llvm from Homebrew and then use it
- install Vusial Studio Community
- or install Mingw64w
- read complete example in
support/docker{Dockerfile|readme.md} - write Dockerfile
- call
sudo systemctl start docker - call
sudo docker build -t leanid/fedora_latest . - call
sudo docker push leanid/fedora_latest
Dockerfile content:
FROM fedora:latest
RUN dnf update -y
RUN dnf upgrade -y
RUN dnf install -y gcc-c++ make cmake mingw64-gcc mingw64-gcc-c++ \
clang wine git SDL3-devel SDL3-static mingw64-SDL3 mingw64-SDL3-static \
libstdc++-static glibc-static ninja-buildПроект собирается в два этапа: сначала зависимости, затем основной код.
Зависимости (SDL3, Boost, GLM, Catch2, googletest, doctest, trompeloeil) собираются из исходников и устанавливаются в deps/prebuilt/<triplet>, где <triplet> — идентификатор платформы (например, linux-clang13-x86_64).
Linux:
cd deps/rules
CXX=clang++ cmake -P linux-build.cmakeВажно: компилятор должен совпадать с тем, что используется в preset основного проекта (
ninja-llvm— clang).
После сборки в deps/prebuilt появится папка с triplet (например, linux-clang13-x86_64).
Когда зависимости собраны и есть папка deps/prebuilt/<triplet>, можно собирать проект:
cmake . --preset ninja-llvm
cmake --build --preset ninja-llvm --config DebugЕсли
deps/prebuiltпуст или отсутствует — сборка основного проекта завершится ошибкой: CMake не найдёт пакеты (SDL3, Boost и т.д.).
Альтернатива: при использовании vcpkg (preset vcpkg) зависимости подтягиваются автоматически, двухэтапная сборка не требуется.
All current development is done in Doomemacs. How to install Doomemacs install How to configure and use usage
ZIP