Skip to content

Instantly share code, notes, and snippets.

@orta-afk
Created June 30, 2025 08:05
Show Gist options
  • Save orta-afk/37f022a5ffe1e7e006253e268330a7b3 to your computer and use it in GitHub Desktop.
Save orta-afk/37f022a5ffe1e7e006253e268330a7b3 to your computer and use it in GitHub Desktop.
Minimal cross-platform SFML 3.0 starter template using modern CMake.

SFML 3.0 Starter Project (Cross-Platform + CMake)

This is a minimalist C++ game dev boilerplate using SFML 3.0.1 + modern CMake .just plug, code, and run fr fr πŸ’…βœ¨

πŸ’  How To Run It (aka β€œHow to not build”)

  • Copy the CMakeLists.txt to your project root
  • Then run: cmake -B build -S .
  • if you use ninja then: cmake -B build -S . -G Ninja
  • Make sure you got a main.cpp inside a src/ folder or you can just copy peast the main.cpp from here

πŸ“ Project Structure I Use (and you should too tbh)

  • πŸ“„ .gitignore
  • πŸ”Ί CMakeLists.txt
  • πŸ“„ README.md
  • πŸ“„ LICENSE
  • πŸ“ assets/
  • πŸ“ fonts/
  • πŸ“ sounds/
  • πŸ“ src/
  • πŸ“ build/
cmake_minimum_required(VERSION 3.28)
project(ProkectName LANGUAGES CXX VERSION 1.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
include(FetchContent)
FetchContent_declare(
SFML
GIT_REPOSITORY https://github.com/SFML/SFML.git
GIT_TAG 3.0.1
)
set(CMAKE_EXPORT_COMPILE_COMMANDS True)
set(SFML_BUILD_DOC OFF CACHE BOOL "" FORCE)
set(SFML_BUILD_TEST_SUITE OFF CACHE BOOL "" FORCE)
set(SFML_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(SFML)
file(GLOB SRC "src/*.cpp")
add_executable(${PROJECT_NAME} ${SRC})
target_link_libraries(${PROJECT_NAME}
PRIVATE
SFML::Graphics
SFML::Audio
SFML::Network
)
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode({800, 600}), "template");
while (window.isOpen())
{
while (const std::optional event = window.pollEvent())
{
if (event->is<sf::Event::Closed>())
window.close();
}
window.clear();
window.display();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment