91 lines
2.5 KiB
Text
91 lines
2.5 KiB
Text
|
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
|
||
|
)
|