From c6ec49f5263a8351e0ccc481c796701c3d6f70bc Mon Sep 17 00:00:00 2001 From: "saarsena@gmail.com" Date: Sat, 25 Apr 2026 21:22:19 -0400 Subject: [PATCH] first commit --- .gitignore | 37 +++++++++++++++++++++++++++++++++++ CMakeLists.txt | 19 ++++++++++++++++++ src/main.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 src/main.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0420cc8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# Build directories +build/ +cmake-build-*/ +out/ +.cache/ +# IDE files +.idea/ +.vscode/ +.claude/ +*.swp +*.swo +*~ + +# Compiled files +*.o +*.obj +*.exe +*.out +*.app + +# CMake generated +CMakeCache.txt +CMakeFiles/ +cmake_install.cmake +Makefile +compile_commands.json + +# Dependencies fetched by CMake +_deps/ +external/*/ + +# OS files +.DS_Store +Thumbs.db + +# AI generated files +CLAUDE.md diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d44e778 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.16) +project(sdl3_template C) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +find_package(SDL3 REQUIRED CONFIG) + +add_executable(${PROJECT_NAME} src/main.c) + +target_include_directories(${PROJECT_NAME} PRIVATE include) +target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3) + +if(MSVC) + target_compile_options(${PROJECT_NAME} PRIVATE /W4) +else() + target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic) +endif() diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..5dbe42a --- /dev/null +++ b/src/main.c @@ -0,0 +1,52 @@ +#include + +#define WINDOW_TITLE "SDL3 Template" +#define WINDOW_WIDTH 800 +#define WINDOW_HEIGHT 600 + +int main(int argc, char *argv[]) { + (void)argc; + (void)argv; + + if (!SDL_Init(SDL_INIT_VIDEO)) { + SDL_Log("SDL_Init failed: %s", SDL_GetError()); + return 1; + } + + SDL_Window *window = NULL; + SDL_Renderer *renderer = NULL; + if (!SDL_CreateWindowAndRenderer(WINDOW_TITLE, WINDOW_WIDTH, WINDOW_HEIGHT, + 0, &window, &renderer)) { + SDL_Log("SDL_CreateWindowAndRenderer failed: %s", SDL_GetError()); + SDL_Quit(); + return 1; + } + + bool running = true; + while (running) { + SDL_Event event; + while (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_EVENT_QUIT: + running = false; + break; + case SDL_EVENT_KEY_DOWN: + if (event.key.key == SDLK_ESCAPE) { + running = false; + } + break; + default: + break; + } + } + + SDL_SetRenderDrawColor(renderer, 0x10, 0x14, 0x1c, 0xff); + SDL_RenderClear(renderer); + SDL_RenderPresent(renderer); + } + + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); + return 0; +}