cmake_minimum_required(VERSION 3.16) project(cardboy_sdk LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED YES) set(CMAKE_CXX_EXTENSIONS NO) add_library(cardboy_sdk INTERFACE) target_include_directories(cardboy_sdk INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_compile_features(cardboy_sdk INTERFACE cxx_std_20) target_sources(cardboy_sdk INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src/app_system.cpp ) add_library(cardboy_apps INTERFACE) target_include_directories(cardboy_apps INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_link_libraries(cardboy_apps INTERFACE cardboy_sdk ) target_sources(cardboy_apps INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/apps/menu_app.cpp ${CMAKE_CURRENT_SOURCE_DIR}/apps/clock_app.cpp ${CMAKE_CURRENT_SOURCE_DIR}/apps/tetris_app.cpp ${CMAKE_CURRENT_SOURCE_DIR}/apps/gameboy_app.cpp ) option(CARDBOY_BUILD_SFML "Build SFML harness" OFF) if (CARDBOY_BUILD_SFML) include(FetchContent) set(SFML_BUILD_AUDIO OFF CACHE BOOL "Disable SFML audio module" FORCE) set(SFML_BUILD_NETWORK OFF CACHE BOOL "Disable SFML network module" FORCE) set(SFML_BUILD_EXAMPLES OFF CACHE BOOL "Disable SFML examples" FORCE) set(SFML_BUILD_TESTS OFF CACHE BOOL "Disable SFML tests" FORCE) set(SFML_USE_SYSTEM_DEPS OFF CACHE BOOL "Use bundled SFML dependencies" FORCE) FetchContent_Declare( SFML GIT_REPOSITORY https://github.com/SFML/SFML.git GIT_TAG 3.0.2 GIT_SHALLOW ON ) FetchContent_MakeAvailable(SFML) add_executable(cardboy_desktop hosts/sfml_main.cpp ) target_link_libraries(cardboy_desktop PRIVATE cardboy_apps SFML::Graphics SFML::Window SFML::System ) target_include_directories(cardboy_desktop PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/hosts/include ) target_compile_definitions(cardboy_desktop PRIVATE CARDBOY_SDK_BACKEND_HEADER=\"cardboy/backend/desktop_backend.hpp\" CARDBOY_SDK_ACTIVE_BACKEND_TYPE=cardboy::backend::DesktopBackend ) target_compile_features(cardboy_desktop PRIVATE cxx_std_20) endif ()