Почему CMake делает различие между «целью» и «командой»?

В семантике CMake есть какое-то различие между «целями» и «командами», которое меня сбивает с толку. В Makefiles такого различия нет :

targetname:dependency
    command

. т. е. цели соответствуют сгенерированному файлу с таким же именем.

В CMake у вас есть такие команды, как «добавить _пользовательскую _команду» и «добавить _пользовательскую _цель», которые имеют перекрывающуюся функциональность, и даже в официальной документации семантика перепутана, т.е. в «Освоение CMake, 5-е издание», стр. 110 в разделе «Добавление пользовательской цели» :

The DEPENDS argument sets up a dependency between the custom target and the custom commands.

. Насколько я понимаю, цели (сгенерированные файлы )имеют зависимости (другие файлы, сгенерированные или нет ), и команда для фактического выполнения генерации. Бессмысленно говорить, что цель зависит от команды. Что еще хуже, есть две разновидности «добавить _пользовательскую _команду», которые либо прикрепляют дополнительную команду к существующей цели, либо выплевывают команду в эфир.

Может кто-нибудь объяснить, почему это различие вообще существует?

52
задан Andrew Wagner 15 August 2012 в 04:07
поделиться