cmake_minimum_required(VERSION 3.24) project(RaylibDmx) # Project Name: RaylibDmx # nvim/fleet users (ONLY WORKS WITH MINGW/NINJA BUILDERS) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Dependencies ## - Raylib ## - rlImGui #### - ImGui # Use FetchContent to download and build raylib # This is a faster alternative to using a git repo, since this just downloads the source # while the git repo pull takes a lot longer. Not sure why, other repos don't seem to have this issue # If you would like to use git instead, use this: # - - - - - - - - - - - - - - - - - - - - - - - - #FetchContent_Declare( # raylib # GIT_REPOSITORY "https://github.com/raysan5/raylib.git" # GIT_TAG "master" # GIT_SHALLOW TRUE # GIT_PROGRESS TRUE #) # - - - - - - - - - - - - - - - - - - - - - - - - include(FetchContent) set(FETCHCONTENT_QUIET FALSE) set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) # don't build the supplied examples set(BUILD_GAMES OFF CACHE BOOL "" FORCE) # don't build the supplied example games FetchContent_Declare( raylib URL https://github.com/raysan5/raylib/archive/refs/tags/4.5.0.tar.gz ) FetchContent_MakeAvailable(raylib) # Raylib conf set(raylib_VERBOSE 1) # Not 100% sure if this does anything... # Download and build Dear ImGui FetchContent_Declare( imgui GIT_REPOSITORY https://github.com/ocornut/imgui.git GIT_SHALLOW TRUE GIT_TAG v1.89.4 ) FetchContent_MakeAvailable(imgui) # Download and build rlImGui FetchContent_Declare( rlImGui GIT_REPOSITORY https://github.com/raylib-extras/rlImGui.git GIT_TAG main ) FetchContent_MakeAvailable(rlImGui) # Add rlImGui library add_library(rlImGui STATIC ${rlImGui_SOURCE_DIR}/rlImGui.cpp ${rlImGui_SOURCE_DIR}/imgui_impl_raylib.cpp ) # Include directories for rlImGui target_include_directories(rlImGui PRIVATE ${imgui_SOURCE_DIR} ${raylib_SOURCE_DIR}/src ${rlImGui_SOURCE_DIR} ) # Link rlImGui with Raylib target_link_libraries(rlImGui PRIVATE raylib) # add source code file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/src/*.cpp") # Define PROJECT_SOURCES as a list of all source files set(PROJECT_INCLUDE "${CMAKE_CURRENT_LIST_DIR}/src") # exe add_executable(${PROJECT_NAME}) target_sources(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCES}) target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_INCLUDE}) target_link_libraries(${PROJECT_NAME} PRIVATE raylib rlImGui) # Web Configurations if (${PLATFORM} STREQUAL "Web") # Tell Emscripten to build an example.html file. set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".html") endif() # Checks if OSX and links appropriate frameworks (Only required on MacOS) if (APPLE) target_link_libraries(${PROJECT_NAME} "-framework IOKit") target_link_libraries(${PROJECT_NAME} "-framework Cocoa") target_link_libraries(${PROJECT_NAME} "-framework OpenGL") endif()