function(GetShaderHeaderFile shader_file_name) set(shader_header_file ${CMAKE_CURRENT_BINARY_DIR}/shaders/${shader_file_name} PARENT_SCOPE) endfunction() foreach(shader_file ${SHADER_FILES}) file(READ ${shader_file} shader) get_filename_component(shader_file_name ${shader_file} NAME) string(REPLACE . _ shader_name ${shader_file_name}) GetShaderHeaderFile(${shader_file_name}) file(WRITE ${shader_header_file} "#pragma once\n" "constexpr std::string_view ${shader_name} = R\"(\n" "${shader}" ")\";\n" ) endforeach()