Skip to content

Latest commit

 

History

History
156 lines (114 loc) · 4.72 KB

README.md

File metadata and controls

156 lines (114 loc) · 4.72 KB

Raylib CMake Template

This template simplifies the setup process for raylib using CMake FetchContent. It automatically fetches and configures raylib along with a few optional game development libraries. Fast and easy way to start your game dev journey with raylib using this straightforward template.

libraries supported

  • raylib - A simple and easy-to-use library to enjoy videogames programming.
  • ImGui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies.
  • LDtkLoader - Used to load and help with drawing a map made with the awesome LDtk.
  • box2d - Ubiquitous and easy to use 2D physics engine.
  • fmt - Logging and string formatting library that makes your life much easier.
  • bullet3 - 3d physics engine.
  • reactphysics3d - Open source C++ physics engine library in 3D. - Note Wasm not working
  • JoltPhysics - A multi core friendly rigid body physics and collision detection library, written in C++, suitable for games and VR applications.

How to use this template

Prerequisites

Choosing What libraries to use

## In CmakeLists.txt edit the following at the top

## Toggle a library with ON or OFF

option(USE_RAYLIB "Use raylib" ON)
option(USE_MINIMAL_RAYLIB_MODULES "Use minimal raylib modules" OFF)
option(USE_IMGUI "Use ImGui" OFF)
option(USE_NO_ASSETS "Use no assets" OFF)
option(USE_LDTKLOADER "Use LDtk Loader" OFF)
option(USE_FMT "Use fmt" OFF)
option(USE_BOX2D "Use Box2D" OFF)
option(USE_BULLET3 "Use Bullet Physics 3D" OFF)
option(USE_REACTPHYSICS3D "Use React Physics 3D" OFF)
option(USE_JOLTPHYSICS "Use Jolt Physics 3D" OFF)

Building for Desktop

## supported windows and linux

## Clone the repository
git clone https://github.com/BrettWilsonBDW/raylib-cmake.git

## Navigate to the project directory
cd raylib-cmake

## Create a build directory
mkdir build

## Navigate to the build directory
cd build

## Run CMake to configure the project
cmake -DCMAKE_BUILD_TYPE=Release ..

## Build the project
cmake --build . --config Release

## The executable is found in the build directory either in the root of the directory or in debug/release file if using msvc

Building for the Web

## Ensure Emscripten is installed and configured:
## on windows
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk.bat install latest
./emsdk.bat activate latest --permanent

## add emsdk to path ex: C:\Program Files\emsdk

## on linux
cd /usr/local
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest --permanent

## add emsdk to path

## Navigate to the project directory
cd raylib-cmake

## Change to tools dir
cd tools

## Run the build script for the web
.\build_for_web.bat async

## If emscripten_set_main_loop_arg is set up then just use:
.\build_for_web.bat

## This gives much better performance in the web
## Example of how to use emscripten_set_main_loop_arg below
emscripten_set_main_loop_arg example
void ClassName::MainLoopHelper(void *userData)
{
    ClassName *className = static_cast<ClassName *>(userData);

    className->Draw(); // call your game functions here
}

// main loop
void ClassName::Run() // Run() is called from a ClassName instance in main
{
#if defined(PLATFORM_WEB)
    emscripten_set_main_loop_arg(MainLoopHelper, this, 0, 1);
#else
    while (!WindowShouldClose())
    {
        MainLoopHelper(this);
    }
#endif

// replace ClassName with the name of your class and function names with your functions

Troubleshooting

## Linux

## Dont forget to install
build-essential

## If missing package issues arise while trying to build in linux you may need to install or update the following:

libx11-dev
libxrandr-dev
libxinerama-dev
libxcursor-dev
libxi-dev

## If missing opengl. install or update
libgl1-mesa-dev

Acknowledgments