Files
live-wallpaper/CMakeLists.txt

93 lines
2.8 KiB
CMake

cmake_minimum_required(VERSION 3.25)
project(live-wallpaper LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# ── CPM ──────────────────────────────────────────────────────────────────────
set(CPM_DOWNLOAD_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake")
if(NOT EXISTS "${CPM_DOWNLOAD_LOCATION}")
message(STATUS "Downloading CPM.cmake to ${CPM_DOWNLOAD_LOCATION}")
file(DOWNLOAD
"https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/CPM.cmake"
"${CPM_DOWNLOAD_LOCATION}"
)
endif()
include("${CPM_DOWNLOAD_LOCATION}")
# ── Dependencies ─────────────────────────────────────────────────────────────
CPMAddPackage(
NAME SDL3
GITHUB_REPOSITORY libsdl-org/SDL
GIT_TAG main
OPTIONS
"SDL_SHARED OFF"
"SDL_STATIC ON"
"SDL_TEST_LIBRARY OFF"
"SDL_TESTS OFF"
"SDL_EXAMPLES OFF"
"SDL_X11_XSCRNSAVER OFF"
)
CPMAddPackage(
NAME lua
GIT_TAG v5.4.7
GITHUB_REPOSITORY walterschell/Lua
OPTIONS
"LUA_BUILD_COMPILER OFF"
"LUA_BUILD_INTERPRETER OFF"
)
CPMAddPackage(
NAME sol2
GITHUB_REPOSITORY ThePhD/sol2
GIT_TAG v3.3.0
OPTIONS
"SOL2_LUA_VERSION 5.4.7"
)
CPMAddPackage(
NAME stb
GITHUB_REPOSITORY nothings/stb
GIT_TAG master
DOWNLOAD_ONLY YES
)
if(stb_ADDED)
add_library(stb INTERFACE)
target_include_directories(stb INTERFACE ${stb_SOURCE_DIR})
endif()
# ── Local dependencies ───────────────────────────────────────────────────────
add_subdirectory(external/glad)
find_package(OpenGL REQUIRED)
find_package(X11 REQUIRED)
# ── Source Files ─────────────────────────────────────────────────────────────
file(GLOB_RECURSE SOURCE_FILES
src/*.cpp
src/*.hpp
src/*.h
)
# ── Executable ───────────────────────────────────────────────────────────────
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME}
PRIVATE
SDL3::SDL3-static
OpenGL::GL
X11::X11
Xext
Lua::Library
sol2
stb
glad
)
target_include_directories(${PROJECT_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)