Use `add_custom_command` and `add_custom_target` instead of
`execute_process` so the generation of the Vulkan shader is done at
build time and not configuration time.
Use `configure_file` instead of string replacement.
Fixes#2179
Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>