# Simple examples for using hdk-sdl. include(FetchContent) include(GNUInstallDirs) 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() 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) target_link_libraries(HelloRenderer2D PRIVATE hdk-sdl) # Stage shared example assets beside the example executables in the build tree. add_custom_command(TARGET HelloRenderer2D POST_BUILD COMMAND ${CMAKE_COMMAND} -E rm -rf ${HDK_SDL_EXAMPLES_ASSETS_BUILD_DIR} COMMAND ${CMAKE_COMMAND} -E copy_directory ${HDK_SDL_EXAMPLES_ASSETS_SOURCE_DIR} ${HDK_SDL_EXAMPLES_ASSETS_BUILD_DIR} COMMENT "Staging hdk-sdl example assets" VERBATIM ) 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 ${HDK_SDL_EXAMPLES_INSTALL_ASSETSDIR} COMPONENT hdk-sdl_examples ) endif()