set(tarball   foo-1.2.3.tar.gz)
set(directory foo-1.2.3)

add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${directory}
    COMMAND ${CMAKE_COMMAND} -E tar zxf ${tarball}
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

# All three ways fail with add_custom_target in parent subdir,
set(output ${output} ${directory})
#set(output ${output} ${CMAKE_CURRENT_SOURCE_DIR}/${directory}) #also fails
#set(output ${output} test/${directory}) #also fails


#add_custom_target(untar DEPENDS ${output})
set(output ${output} PARENT_SCOPE)
