include(CMakePrintHelpers)

string(REPLACE "\\ " " " sources_dir "${src_dir}")
string(REPLACE "\\ " " " destination_dir "${dst_dir}")

file(GLOB_RECURSE _file_list RELATIVE "${sources_dir}" "${sources_dir}/*")

foreach( each_file ${_file_list} )
  set(destinationfile "${destination_dir}/${each_file}")
  set(sourcefile "${sources_dir}/${each_file}")
  if(NOT EXISTS ${destinationfile} OR ${sourcefile} IS_NEWER_THAN ${destinationfile})
    get_filename_component(destinationdir ${destinationfile} DIRECTORY)
    file(COPY ${sourcefile} DESTINATION ${destinationdir})
  endif()
endforeach(each_file)