В семантике CMake есть какое-то различие между «целями» и «командами», которое меня сбивает с толку. В Makefiles такого различия нет :
targetname:dependency
command
. т. е. цели соответствуют сгенерированному файлу с таким же именем.
В CMake у вас есть такие команды, как «добавить _пользовательскую _команду» и «добавить _пользовательскую _цель», которые имеют перекрывающуюся функциональность, и даже в официальной документации семантика перепутана, т.е. в «Освоение CMake, 5-е издание», стр. 110 в разделе «Добавление пользовательской цели» :
The DEPENDS argument sets up a dependency between the custom target and the custom commands.
. Насколько я понимаю, цели (сгенерированные файлы )имеют зависимости (другие файлы, сгенерированные или нет ), и команда для фактического выполнения генерации. Бессмысленно говорить, что цель зависит от команды. Что еще хуже, есть две разновидности «добавить _пользовательскую _команду», которые либо прикрепляют дополнительную команду к существующей цели, либо выплевывают команду в эфир.
Может кто-нибудь объяснить, почему это различие вообще существует?