Каждый проект может создавать несколько исполняемых файлов или библиотек или вызывать make-файл или сценарий оболочки для создания «вещи». Каждый из них является целью.
Один проект iPhone, который у меня есть, включает отдельную цель для каждой статической библиотеки в моем доморощенном SDK и цель сценария оболочки для создания документов Doxygen. Другой проект включает в себя две цели: одну для приложения, используемого обычными пользователями, другую - для администрирования и управления.
В первом примере мне нужно собрать каждую библиотеку, а затем связать все статические библиотеки в тестовом приложении SDK, поэтому мое тестовое приложение SDK зависит от всех целевых библиотек (но не от документов, поскольку мне не нужно постоянно их регенерируй.)
Во втором примере управление и общие версии приложения совместно используют значительный объем кода и ресурсов. Когда я меняю один, я хочу изменить их обоих.