function(headers_to_include_dirs header_file_list include_directory_list)
    #Extract the directories for each header file
    foreach(header ${${header_file_list}})
        get_filename_component(incl_dir ${header} DIRECTORY)
        list(APPEND dir_list ${incl_dir})
    endforeach()

    #Remove any duplicates
    list(LENGTH "${dir_list}" length)
    if(${length} GREATER 1) #Avoid error with zero-length lists
        list(REMOVE_DUPLICATES ${dir_list})
    endif()

    #Set the second argument in the caller's scope
    set(${include_directory_list} ${dir_list} PARENT_SCOPE)
endfunction(headers_to_include_dirs)