cmake_minimum_required(VERSION 3.21) project(lightkeeper LANGUAGES CXX C) set(GAME_SRC src/main.cpp src/Lightkeeper.cpp ) add_executable(lightkeeper ${GAME_SRC}) set_target_properties(lightkeeper PROPERTIES CXX_STANDARD 20 CXX_EXTENSIONS OFF ) #target_add_extra_warnings(lightkeeper) target_include_directories(lightkeeper PRIVATE "${CMAKE_CURRENT_LIST_DIR}/include") target_link_libraries(lightkeeper PRIVATE destrum::destrum) #symlink_assets(lightkeeper) set(LK_SHADER_SRC "${CMAKE_CURRENT_LIST_DIR}/assets_src/shaders") set(LK_SHADER_OUT "${CMAKE_CURRENT_LIST_DIR}/assets_runtime/shaders") include(../cmake/compile_shaders.cmake) compile_glsl_to_spv(lightkeeper "${LK_SHADER_SRC}" "${LK_SHADER_OUT}" LK_SPV) add_dependencies(lightkeeper lightkeeper_shaders) set(ENGINE_ASSETS_SRC "${CMAKE_SOURCE_DIR}/destrum/assets_runtime") set(GAME_ASSETS_SRC "${CMAKE_SOURCE_DIR}/lightkeeper/assets_runtime") set(ENGINE_ASSETS_DST "$/assets/engine") set(GAME_ASSETS_DST "$/assets/game") add_custom_command(TARGET lightkeeper POST_BUILD # ensure parent dir exists COMMAND ${CMAKE_COMMAND} -E make_directory "$/assets" # remove destinations if they already exist (dir OR symlink) COMMAND ${CMAKE_COMMAND} -E rm -rf "${ENGINE_ASSETS_DST}" COMMAND ${CMAKE_COMMAND} -E rm -rf "${GAME_ASSETS_DST}" # create symlinks COMMAND ${CMAKE_COMMAND} -E create_symlink "${ENGINE_ASSETS_SRC}" "${ENGINE_ASSETS_DST}" COMMAND ${CMAKE_COMMAND} -E create_symlink "${GAME_ASSETS_SRC}" "${GAME_ASSETS_DST}" VERBATIM )