cmake_minimum_required(VERSION 3.11...3.31) project(kubo LANGUAGES C) set(CMAKE_C_STANDARD 99) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) option(USE_SYSTEM_RAYLIB "Use system-installed raylib instead of downloading" OFF) if(USE_SYSTEM_RAYLIB) set(RAYLIB_VERSION 5.5) find_package(raylib ${RAYLIB_VERSION} REQUIRED) else() include(FetchContent) set(FETCHCONTENT_QUIET FALSE) set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) # don't build the supplied examples set(BUILD_GAMES OFF CACHE BOOL "" FORCE) # don't build the supplied example games set(GLFW_BUILD_WAYLAND "Build the bundled GLFW with Wayland support" ON) set(GLFW_BUILD_X11 "Build the bundled GLFW with X11 support" ON) FetchContent_Declare( raylib GIT_REPOSITORY "https://github.com/raysan5/raylib.git" GIT_TAG "master" GIT_PROGRESS TRUE ) FetchContent_MakeAvailable(raylib) endif() find_path(CYAML_INCLUDE_DIR cyaml/cyaml.h) find_library(CYAML_LIBRARY cyaml) add_subdirectory(states) set(SOURCES kubo_file.c kubo_input.c kubo_command_bar.c kubo_bar.c kubo_wall.c kubo_window.c kubo_context.c kubo_command.c kubo_camera.c main.c ${STATES_SOURCES} ) add_custom_target(format COMMAND clang-format -i -- **.c **.h WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMENT "Formatting source files..." ) add_executable(kubo ${SOURCES}) if(MSVC) target_compile_options(kubo PRIVATE /W4 /WX) else() target_compile_options(kubo PRIVATE -Wall -Wextra -Werror) endif() target_include_directories(kubo PRIVATE ${CYAML_INCLUDE_DIR}) target_link_libraries(kubo PRIVATE ${CYAML_LIBRARY}) target_link_libraries(kubo PRIVATE raylib)