CMake Policy Implementation changes.

This commit is contained in:
BadQuanta
2026-05-16 21:37:44 +00:00
parent 15bb051619
commit 689d5e979d
12 changed files with 765 additions and 166 deletions
+47 -3
View File
@@ -1,10 +1,52 @@
# Simple examples for using hdk-sdl.
include(FetchContent)
include(GNUInstallDirs)
option(HDK_SDL_INSTALL_EXAMPLES "Install hdk-sdl example binaries and assets" OFF)
if(DEFINED HDK_CMAKE_POLICY_DIR AND EXISTS "${HDK_CMAKE_POLICY_DIR}/HDKExampleAssetsPolicy.cmake")
include("${HDK_CMAKE_POLICY_DIR}/HDKExampleAssetsPolicy.cmake")
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/HDKExampleAssetsPolicy.cmake")
include("${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/HDKExampleAssetsPolicy.cmake")
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/HDKExampleAssetsPolicy.cmake")
include("${CMAKE_CURRENT_SOURCE_DIR}/../cmake/HDKExampleAssetsPolicy.cmake")
else()
message(FATAL_ERROR "Unable to locate HDKExampleAssetsPolicy.cmake")
endif()
set(HDK_SDL_EXAMPLES_ASSETS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/assets)
option(HDK_SDL_INSTALL_EXAMPLES "Install hdk-sdl example binaries and assets" OFF)
option(HDK_SDL_EXAMPLES_FETCH_ASSETS "Fetch hdk-assets when no suitable package is found" ON)
if(DEFINED HDK_ASSETS_MIN_VERSION)
set(_hdk_sdl_assets_min_version_default "${HDK_ASSETS_MIN_VERSION}")
else()
set(_hdk_sdl_assets_min_version_default "0.0.1")
endif()
if(DEFINED HDK_ASSETS_GIT_REPOSITORY)
set(_hdk_sdl_assets_repo_default "${HDK_ASSETS_GIT_REPOSITORY}")
else()
set(_hdk_sdl_assets_repo_default "https://git.ufp.institute/ufp/hdk-assets.git")
endif()
if(DEFINED HDK_INSTALL_ASSETSDIR)
set(_hdk_sdl_install_assetsdir_default "${HDK_INSTALL_ASSETSDIR}")
else()
set(_hdk_sdl_install_assetsdir_default "assets")
endif()
set(HDK_SDL_EXAMPLES_ASSETS_MIN_VERSION "${_hdk_sdl_assets_min_version_default}" CACHE STRING "Minimum hdk-assets version used by hdk-sdl examples")
set(HDK_SDL_EXAMPLES_ASSETS_GIT_REPOSITORY "${_hdk_sdl_assets_repo_default}" CACHE STRING "Git repository for hdk-assets fallback in hdk-sdl examples")
set(HDK_SDL_EXAMPLES_ASSETS_GIT_TAG "v${HDK_SDL_EXAMPLES_ASSETS_MIN_VERSION}" CACHE STRING "Git tag used for hdk-assets fallback in hdk-sdl examples")
set(HDK_SDL_EXAMPLES_INSTALL_ASSETSDIR "${_hdk_sdl_install_assetsdir_default}" CACHE STRING "Install destination for hdk-sdl example assets (relative to CMAKE_INSTALL_PREFIX)")
hdk_resolve_example_assets(
OUT_VAR HDK_SDL_EXAMPLES_ASSETS_SOURCE_DIR
FETCH_OPTION ${HDK_SDL_EXAMPLES_FETCH_ASSETS}
MIN_VERSION ${HDK_SDL_EXAMPLES_ASSETS_MIN_VERSION}
GIT_REPOSITORY ${HDK_SDL_EXAMPLES_ASSETS_GIT_REPOSITORY}
GIT_TAG ${HDK_SDL_EXAMPLES_ASSETS_GIT_TAG}
CONTEXT "hdk-sdl examples"
)
set(HDK_SDL_EXAMPLES_ASSETS_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../assets)
add_executable(HelloRenderer2D HelloRenderer2D.cpp)
@@ -23,9 +65,11 @@ add_custom_command(TARGET HelloRenderer2D POST_BUILD
if(HDK_SDL_INSTALL_EXAMPLES)
install(TARGETS HelloRenderer2D
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT hdk-sdl_examples
)
install(DIRECTORY ${HDK_SDL_EXAMPLES_ASSETS_SOURCE_DIR}/
DESTINATION assets
DESTINATION ${HDK_SDL_EXAMPLES_INSTALL_ASSETSDIR}
COMPONENT hdk-sdl_examples
)
endif()