LumaShow/CMakeLists.txt
2024-08-15 02:11:50 -06:00

96 lines
2.9 KiB
CMake

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