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}) ############################################################## set(RAYLIB_DIR "/home/sillysagiri/Panda/04-WORKSPACE/00-PROGRAMMING/_Git Clone/raylib-4.5.0") set(IMGUI_DIR "/home/sillysagiri/Panda/04-WORKSPACE/00-PROGRAMMING/_Git Clone/imgui-docking") set(RLIMGUI_DIR "/home/sillysagiri/Panda/04-WORKSPACE/00-PROGRAMMING/_Git Clone/rlImGui") set(INIFILE_DIR "/home/sillysagiri/Panda/04-WORKSPACE/00-PROGRAMMING/_Git Clone/inifile-cpp") ### Fallback link set(RAYLIB_LINK "https://github.com/raysan5/raylib/archive/refs/tags/4.5.0.zip") set(IMGUI_LINK "https://github.com/ocornut/imgui/archive/refs/tags/v1.89.7.zip") set(RLIMGUI_LINK "https://github.com/raylib-extras/rlImGui/archive/refs/heads/main.zip") set(INIFILE_LINK "https://github.com/Rookfighter/inifile-cpp/archive/refs/heads/master.zip") ############################################################## if (EXISTS ${RAYLIB_DIR}) add_subdirectory(${RAYLIB_DIR} raylib) else() message(STATUS "Downloading raylib library") include(FetchContent) set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) FetchContent_Declare(raylib URL ${RAYLIB_LINK}) FetchContent_MakeAvailable(raylib) endif() if (EXISTS ${IMGUI_DIR}) set(imgui_SOURCE_DIR ${IMGUI_DIR}) else() message(STATUS "Downloading imgui library") include(FetchContent) FetchContent_Declare(imgui URL ${IMGUI_LINK}) FetchContent_MakeAvailable(imgui) endif() if (EXISTS ${RLIMGUI_DIR}) set(rlimgui_SOURCE_DIR ${RLIMGUI_DIR}) else() message(STATUS "Downloading rlImGui library") include(FetchContent) FetchContent_Declare(rlimgui URL ${RLIMGUI_LINK}) FetchContent_MakeAvailable(rlimgui) endif() if (EXISTS ${INIFILE_DIR}) set(inifile-cpp_SOURCE_DIR ${INIFILE_DIR}) else() message(STATUS "Downloading inifile-cpp library") include(FetchContent) FetchContent_Declare(inifile-cpp URL ${INIFILE_LINK}) FetchContent_MakeAvailable(inifile-cpp) endif() ############################################################## # yes... im using glob... dont judge me.... file(GLOB PROJECT_SOURCES CONFIGURE_DEPENDS "src/*.cpp" "src/**/*.cpp" "${imgui_SOURCE_DIR}/*.cpp" "${imgui_SOURCE_DIR}/misc/cpp/*.cpp" "${rlimgui_SOURCE_DIR}/*.cpp") set(PROJECT_INCLUDE "src" ${imgui_SOURCE_DIR} ${imgui_SOURCE_DIR}/backends ${rlimgui_SOURCE_DIR} ${inifile-cpp_SOURCE_DIR}/include) set(PROJECT_LIBRARY raylib) set(PROJECT_DEFINITION "") ############################################################## 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)