cmake_minimum_required(VERSION 3.11) # Raylib find_package(raylib ${RAYLIB_VERSION} QUIET) # QUIET or REQUIRED if (NOT raylib_FOUND) # If there's none, fetch and build raylib include(FetchContent) FetchContent_Declare( raylib DOWNLOAD_EXTRACT_TIMESTAMP OFF URL https://github.com/raysan5/raylib/archive/refs/tags/${RAYLIB_VERSION}.tar.gz ) FetchContent_GetProperties(raylib) if (NOT raylib_POPULATED) # Have we downloaded raylib yet? set(FETCHCONTENT_QUIET NO) FetchContent_MakeAvailable(raylib) set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) # don't build the supplied examples endif() endif() # dear imgui include(FetchContent) FetchContent_Declare( imgui_content DOWNLOAD_EXTRACT_TIMESTAMP OFF URL https://github.com/ocornut/imgui/archive/refs/tags/v1.91.8.tar.gz ) FetchContent_Populate(imgui_content) FetchContent_GetProperties(imgui_content) project(imgui_library) set(imgui_SOURCE_FILES "${imgui_content_SOURCE_DIR}/imgui.cpp" "${imgui_content_SOURCE_DIR}/imgui_demo.cpp" "${imgui_content_SOURCE_DIR}/imgui_draw.cpp" "${imgui_content_SOURCE_DIR}/imgui_tables.cpp" "${imgui_content_SOURCE_DIR}/imgui_widgets.cpp" "${imgui_content_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp" ) add_library(imgui STATIC "${imgui_SOURCE_FILES}") target_include_directories(imgui PRIVATE "${imgui_content_SOURCE_DIR}") SET(imgui_INCLUDE_DIRS "${imgui_content_SOURCE_DIR}" "${imgui_content_SOURCE_DIR}/misc/cpp" CACHE INTERNAL "ImGUI Header folder") set_target_properties(${imgui} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" ) # rlImGui FetchContent_Declare( rlimgui_content GIT_REPOSITORY https://github.com/raylib-extras/rlImGui GIT_TAG 8d3a31402f6b99ba52925acc96441c2410f6b500 ) FetchContent_Populate(rlimgui_content) FetchContent_GetProperties(rlimgui_content) project(rlimgui) add_library(rlimgui STATIC "${rlimgui_content_SOURCE_DIR}/rlImGui.cpp") target_include_directories(rlimgui PRIVATE "${rlimgui_content_SOURCE_DIR}") target_include_directories(rlimgui PRIVATE "${imgui_INCLUDE_DIRS}") target_link_libraries(rlimgui raylib imgui) SET(rlImGui_INCLUDE_DIRS "${rlimgui_content_SOURCE_DIR}" CACHE INTERNAL "rlImGui Header folder") set_target_properties(${rlimgui} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" )