function(exec)
  set(args "")
  foreach(arg IN LISTS ARGN)
    string(FIND "${arg}" " " index)
    if(index EQUAL -1)
      list(APPEND args "${arg}")
    else()
      list(APPEND args "\"${arg}\"")
    endif()
  endforeach()

  string(ASCII 27 Esc)
  list(JOIN args " " args)
  message(STATUS "${Esc}[36mExecuting: ${args}${Esc}[m")

  execute_process(COMMAND ${ARGN} RESULT_VARIABLE result)

  if(NOT result EQUAL 0)
    message(FATAL_ERROR "${Esc}[1;31mBad exit status (${result})${Esc}[m")
  endif()
endfunction()
