在 CMake 语义学中,“目标”和命令之间存在某种区别,这让我很困惑。在 Makefiles,没有这样的区别:
targetname:dependency
command
也就是说,目标对应于生成的同名文件。
在 CMake 中,像“ add _ custom_ command”和“ add _ custom_ target”这样的命令有重叠的功能,甚至在官方文档中,语义也是混乱的,比如在“ MasteringCMake,第5版”第110页的“添加一个自定义目标”中:
DEPENDS 参数设置自定义目标之间的依赖项 和自定义命令。
我的理解是,目标(生成的文件)具有依赖项(其他文件,生成或不生成) ,以及一个实际执行生成的命令。说目标依赖于命令是毫无意义的。更糟糕的是,有两种类型的“ add _ custom_ command”,它们要么向现有目标附加一个额外的命令,要么将该命令发送出去。
有人能解释一下为什么会有这种区别吗?