cmake_minimum_required(VERSION 3.16) set(CMAKE_TOOLCHAIN_FILE $ENV{CMAKE_TOOLCHAIN_FILE}) project(game-dev VERSION 0.0.1 DESCRIPTION "A project for learning about game dev" LANGUAGES C) set(CMAKE_C_STANDARD 23) set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") include(FetchContent) set(FETCHCONTENT_QUIET FALSE) set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "Do not build shared libraries") FetchContent_Declare( SDL GIT_REPOSITORY https://github.com/libsdl-org/SDL.git GIT_TAG release-3.2.4 GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) message(STATUS "Using SDL via FetchContent") FetchContent_MakeAvailable(SDL) set_property(DIRECTORY "${sdl_SOURCE_DIR}" PROPERTY EXCLUDE_FROM_ALL TRUE) FetchContent_Declare( SDL_ttf GIT_REPOSITORY https://github.com/libsdl-org/SDL_ttf.git GIT_TAG preview-3.1.0 # Switch from preview to release when available GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) message(STATUS "Using SDL_ttf via FetchContent") FetchContent_MakeAvailable(SDL_ttf) set_property(DIRECTORY "${sdl_ttf_SOURCE_DIR}" PROPERTY EXCLUDE_FROM_ALL TRUE) FetchContent_Declare( SDL_image GIT_REPOSITORY "https://github.com/libsdl-org/SDL_image.git" GIT_TAG release-3.2.0 GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) message(STATUS "Using SDL_image via FetchContent") FetchContent_MakeAvailable(SDL_image) set_property(DIRECTORY "${SDL_image_SOURCE_DIR}" PROPERTY EXCLUDE_FROM_ALL TRUE) FetchContent_Declare( flecs GIT_REPOSITORY "https://github.com/SanderMertens/flecs.git" GIT_TAG master GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) message(STATUS "Using flecs via FetchContent") FetchContent_MakeAvailable(flecs) set_property(DIRECTORY "${flecs_SOURCE_DIR}" PROPERTY EXCLUDE_FROM_ALL TRUE) if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") message(STATUS "Building for Windows") add_executable(${PROJECT_NAME} WIN32 main.c) target_link_options(${PROJECT_NAME} PRIVATE -lWs2_32) elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") message(STATUS "Building for MacOS") add_executable(${PROJECT_NAME} MACOSX_BUNDLE main.c) elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") message(STATUS "Building for Linux") add_executable(${PROJECT_NAME} main.c) else() message(STATUS "Unsupported platform") endif() target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3-static SDL3_ttf::SDL3_ttf-static SDL3_image::SDL3_image-static flecs::flecs_static ) add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/resources ${CMAKE_CURRENT_BINARY_DIR}/resources )