cmake_minimum_required(VERSION 3.18) set(NAME "leyngine") project(${NAME} CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Copying assets file(COPY "${CMAKE_SOURCE_DIR}/assets" DESTINATION "${CMAKE_BINARY_DIR}") # includes include_directories(./includes) # raylib include(FetchContent) FetchContent_Declare( raylib GIT_REPOSITORY https://github.com/raysan5/raylib.git GIT_TAG 5.5 GIT_SHALLOW 1 ) FetchContent_GetProperties(raylib) if (NOT raylib_POPULATED) set(FETCHCONTENT_QUIET NO) FetchContent_Populate(raylib) set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(BUILD_GAMES OFF CACHE BOOL "" FORCE) add_subdirectory(${raylib_SOURCE_DIR} ${raylib_BINARY_DIR}) endif() # nlohmann::json FetchContent_Declare( json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG v3.11.3 ) FetchContent_MakeAvailable(json) include_directories(${imgui_SOURCE_DIR} ${rlImGui_SOURCE_DIR}) set(SRC_CXX_FILES "./srcs/main.cpp" "./srcs/Model.cpp" ) add_executable(${NAME} ${SRC_CXX_FILES}) target_link_libraries(${NAME} PUBLIC raylib nlohmann_json::nlohmann_json) # Windows cross-compilation rule if (NOT DEFINED CMAKE_CROSSCOMPILE_WINDOWS_HELPER_ADDED) set(CMAKE_CROSSCOMPILE_WINDOWS_HELPER_ADDED TRUE) set(WIN_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/toolchain-mingw-w64-x86_64.cmake" CACHE PATH "Toolchain for Win x86_64") add_custom_target(cmake-win COMMAND ${CMAKE_COMMAND} -E echo "Configuring Windows x86_64 build in: ${CMAKE_SOURCE_DIR}/build-win-x86_64" COMMAND ${CMAKE_COMMAND} -S ${CMAKE_SOURCE_DIR} -B ${CMAKE_SOURCE_DIR}/build-win-x86_64 -G "Ninja" -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_TOOLCHAIN_FILE=${WIN_TOOLCHAIN_FILE} COMMAND ${CMAKE_COMMAND} --build ${CMAKE_SOURCE_DIR}/build-win-x86_64 -- -v WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMENT "Configure & build for Windows x86_64 (MinGW-w64)" VERBATIM ) endif()