cmake_minimum_required(VERSION 3.24) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(PROJECT_NAME panda-core) set(PROJECT_VERSION 1.0) project(${PROJECT_NAME} VERSION ${PROJECT_VERSION}) ############################################################## option(PANDA_INCLUDE_IMGUI "include imgui" ON) ### Fallback link if(NOT RAYLIB_LINK) set(RAYLIB_LINK "https://github.com/raysan5/raylib/archive/refs/tags/5.5.tar.gz") endif() if(NOT RAYLIB_EXTRA_LINK) set(RAYLIB_EXTRA_LINK "https://github.com/raylib-extras/extras-cpp/archive/refs/heads/main.zip") endif() if(NOT IMGUI_LINK) set(IMGUI_LINK "https://github.com/ocornut/imgui/archive/refs/heads/docking.zip") endif() if(NOT RLIMGUI_LINK) set(RLIMGUI_LINK "https://github.com/raylib-extras/rlImGui/archive/refs/heads/main.zip") endif() ############################################################## include(FetchContent) message(STATUS "Downloading raylib library") set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) FetchContent_Declare(raylib URL ${RAYLIB_LINK}) FetchContent_MakeAvailable(raylib) message(STATUS "Downloading raylib extra library") FetchContent_Declare(raylib-extra URL ${RAYLIB_EXTRA_LINK}) FetchContent_MakeAvailable(raylib-extra) ############################################################## # yes... im using glob... dont judge me.... file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS "src/*.cpp") set(PROJECT_INCLUDE "src" "${inifile-cpp_SOURCE_DIR}/include" "${raylib-extra_SOURCE_DIR}") set(PROJECT_LIBRARY raylib) set(PROJECT_DEFINITION "_PANDA_CORE_" NO_FONT_AWESOME) ############################################################## if(PANDA_INCLUDE_IMGUI) set(PROJECT_DEFINITION ${PROJECT_DEFINITION} PANDA_INCLUDE_IMGUI) message(STATUS "Downloading imgui library") FetchContent_Declare(imgui URL ${IMGUI_LINK}) FetchContent_MakeAvailable(imgui) message(STATUS "Downloading rlImGui library") FetchContent_Declare(rlimgui URL ${RLIMGUI_LINK}) FetchContent_MakeAvailable(rlimgui) file(GLOB IMGUI_SOURCES CONFIGURE_DEPENDS "${imgui_SOURCE_DIR}/*.cpp" "${imgui_SOURCE_DIR}/misc/cpp/*.cpp" "${rlimgui_SOURCE_DIR}/*.cpp") set (PROJECT_SOURCES ${PROJECT_SOURCES} ${IMGUI_SOURCES}) set(PROJECT_INCLUDE ${PROJECT_INCLUDE} ${imgui_SOURCE_DIR} ${imgui_SOURCE_DIR}/backends ${rlimgui_SOURCE_DIR}) endif() ############################################################## add_library(${PROJECT_NAME} STATIC ${PROJECT_SOURCES}) target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_INCLUDE}) target_link_libraries(${PROJECT_NAME} PUBLIC ${PROJECT_LIBRARY}) target_compile_definitions(${PROJECT_NAME} PUBLIC ${PROJECT_DEFINITION}) target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic)