2024-08-14 19:35:12 -07:00
# Raylib-Quickstart
2024-09-27 07:41:45 -07:00
A simple cross platform template for setting up a project with the bleeding edge raylib code.
2024-09-30 20:57:20 +02:00
Works with C or C++.
2024-08-14 17:09:43 -07:00
2025-12-09 11:36:37 -08:00
# Basic Setup
Download this repository to get started.
You can download the zip file of the repository from the Green Code button on github. This is the simplest way to get the template to start from.
Once you have downloaded the template, rename it to your project name.
or
2026-01-06 23:18:43 +00:00
Clone the repository with git, from the url
2025-12-09 11:36:37 -08:00
```
https://github.com/raylib-extras/raylib-quickstart.git
```
If you are using a command line git client you can use the command below to download and rename the template in one step
```
git clone https://github.com/raylib-extras/raylib-quickstart.git [name-for-your-project-here]
```
# Naming projects
* Replace the placeholder with your desired project name when running the git clone command above.
* __Do not name your game project 'raylib', it will conflict with the raylib library.__
* If you have used custom game name with __git clone __ , there is no need to rename it again.
2024-08-17 08:53:09 -07:00
## Supported Platforms
2024-11-23 23:53:41 +08:00
Quickstart supports the main 3 desktop platforms:
2024-08-17 08:53:09 -07:00
* Windows
* Linux
* MacOS
# VSCode Users (all platforms)
2025-01-15 19:13:31 -08:00
*Note* You must have a compiler toolchain installed in addition to vscode.
2025-11-20 19:36:37 +01:00
1. Download the quickstart
2. Rename the folder to your game name
3. Open the folder in VSCode
4. Run the build task ( CTRL+SHIFT+B or F5 )
5. You are good to go
2024-08-14 17:09:43 -07:00
# Windows Users
2024-11-18 15:48:51 -08:00
There are two compiler toolchains available for windows, MinGW-W64 (a free compiler using GCC), and Microsoft Visual Studio
2024-08-14 17:09:43 -07:00
## Using MinGW-W64
2025-12-03 05:31:19 +00:00
* Rename the folder to your game name
2024-11-24 00:00:41 +08:00
* Double click the `build-MinGW-W64.bat` file
2024-11-23 23:53:41 +08:00
* CD into the folder in your terminal
2025-12-03 05:31:19 +00:00
* if you are using the W64devkit and have not added it to your system path environment variable, you must use the W64devkit.exe terminal, not CMD.exe
2025-07-17 10:53:07 -07:00
* If you want to use cmd.exe or any other terminal, please make sure that gcc/mingw-W64 is in your path environment variable.
2024-11-24 00:00:41 +08:00
* run `make`
2024-08-17 08:53:09 -07:00
* You are good to go
2024-08-14 17:09:43 -07:00
### Note on MinGW-64 versions
Make sure you have a modern version of MinGW-W64 (not mingw).
The best place to get it is from the W64devkit from
https://github.com/skeeto/w64devkit/releases
2025-12-09 11:36:37 -08:00
2024-08-17 08:53:09 -07:00
or the version installed with the raylib installer
2025-12-09 11:36:37 -08:00
2024-11-23 23:53:41 +08:00
#### If you have installed raylib from the installer
2024-08-17 08:53:09 -07:00
Make sure you have added the path
2024-11-24 00:00:41 +08:00
`C:\raylib\w64devkit\bin`
2024-08-17 08:53:09 -07:00
2024-11-23 23:53:41 +08:00
To your path environment variable so that the compiler that came with raylib can be found.
2024-08-17 08:53:09 -07:00
2024-11-23 23:53:41 +08:00
DO NOT INSTALL ANOTHER MinGW-W64 from another source such as msys2, you don't need it.
2024-08-14 17:09:43 -07:00
## Microsoft Visual Studio
2025-12-03 05:31:19 +00:00
* Rename the folder to your game name
2024-11-23 23:53:41 +08:00
* Run `build-VisualStudio2022.bat`
* double click the `.sln` file that is generated
2024-08-14 19:36:33 -07:00
* develop your game
2024-11-23 23:53:41 +08:00
* you are good to go
2024-08-14 17:09:43 -07:00
2024-08-23 07:09:36 -07:00
# Linux Users
2025-12-03 05:31:19 +00:00
* Rename the folder to your game name
2024-08-14 19:36:33 -07:00
* CD into the build folder
2025-07-14 11:14:09 -07:00
* run `./premake5 gmake`
2024-08-14 19:36:33 -07:00
* CD back to the root
2024-11-24 00:00:41 +08:00
* run `make`
2024-08-14 19:36:33 -07:00
* you are good to go
2024-08-23 07:09:36 -07:00
# MacOS Users
2025-12-03 05:31:19 +00:00
* Rename the folder to your game name
2024-08-23 07:09:36 -07:00
* CD into the build folder
2025-07-14 11:14:09 -07:00
* run `./premake5.osx gmake`
2024-08-23 07:09:36 -07:00
* CD back to the root
2024-11-24 00:00:41 +08:00
* run `make`
2024-08-23 07:09:36 -07:00
* you are good to go
2024-08-14 19:36:33 -07:00
# Output files
The built code will be in the bin dir
2024-08-14 17:09:43 -07:00
2024-08-17 08:53:09 -07:00
# Working directories and the resources folder
2024-11-24 00:00:41 +08:00
The example uses a utility function from `path_utils.h` that will find the resources dir and set it as the current working directory. This is very useful when starting out. If you wish to manage your own working directory you can simply remove the call to the function and the header.
2024-08-17 08:53:09 -07:00
2024-09-20 15:56:00 -07:00
# Changing to C++
2024-11-24 00:00:41 +08:00
Simply rename `src/main.c` to `src/main.cpp` and re-run the steps above and do a clean build.
2024-09-20 15:56:00 -07:00
# Using your own code
2024-11-24 00:00:41 +08:00
Simply remove `src/main.c` and replace it with your code, and re-run the steps above and do a clean build.
2024-09-20 15:56:00 -07:00
2025-11-20 15:47:24 -08:00
# Building for other OpenGL targets
If you need to build for a different OpenGL version than the default (OpenGL 3.3) you can specify an OpenGL version in your premake command line. Just modify the bat file or add the following to your command line
2025-11-20 19:36:37 +01:00
2025-11-20 15:47:24 -08:00
## For OpenGL 1.1
`--graphics=opengl11`
2025-11-20 19:36:37 +01:00
2025-11-20 15:47:24 -08:00
## For OpenGL 2.1
`--graphics=opengl21`
2025-11-20 19:36:37 +01:00
2025-11-20 15:47:24 -08:00
## For OpenGL 4.3
`--graphics=opengl43`
2025-11-20 19:36:37 +01:00
2025-11-20 15:47:24 -08:00
## For OpenGLES 2.0
`--graphics=opengles2`
2025-11-20 19:36:37 +01:00
2025-11-20 15:47:24 -08:00
## For OpenGLES 3.0
`--graphics=opengles3`
2025-11-20 19:36:37 +01:00
2025-11-20 15:47:24 -08:00
# Adding External Libraries
Quickstart is intentionally minimal — it only includes what is required to compile and run a basic raylib project.
If you want to use extra libraries, you can add them to the `build/premake5.lua` file yourself using the links function.
You can find the documentation for the links function here https://premake.github.io/docs/links/
### Example: adding the required libraries for tinyfiledialogs on Windows
2025-11-20 19:36:37 +01:00
tinyfiledialogs requires extra Windows system libraries.
2025-11-20 15:47:24 -08:00
The premake file uses filters to define options that are platform specific
https://premake.github.io/docs/Filters/
Using the windows filter adds these libraries only to the windows build.
2025-11-20 19:36:37 +01:00
```
filter "system:windows"
links {
"Comdlg32",
"User32",
"Ole32",
"Shell32"
}
```
### Cross-platform reminder
If you add a library, make sure to add its required dependencies for all platforms you plan to support (Windows, Linux, MacOS).
2025-11-20 15:47:24 -08:00
Different libraries will have different dependencies on different platforms.
2024-08-14 17:09:43 -07:00
# License
2025-02-02 11:59:51 -08:00
Copyright (c) 2020-2025 Jeffery Myers
2024-08-14 17:09:43 -07:00
This software is provided "as-is", without any express or implied warranty. In no event
will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial
applications, and to alter it and redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you
wrote the original software. If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented
as being the original software.
3. This notice may not be removed or altered from any source distribution.