Files
leyngine/CMakeLists.txt
2026-01-09 13:14:33 +01:00

74 lines
2.0 KiB
CMake

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()