根据文档,add_custom_target()创建一个“始终被认为过时”的目标。然而,文档还说可以add_dependencies()在顶级目标之间添加依赖关系,包括add_custom_target(). 如果add_custom_target()总是被执行,那么将它与 一起使用有什么实际目的吗add_dependencies()?
就 CMake 而言,add_custom_target不会生成任何可以跟踪的内容来确定目标是否已过时。
与 对比add_custom_command,您可以指定OUTPUT命令生成的结果。据 CMake 所知,自定义目标只是一个黑匣子,任何事情都可能发生。这就是为什么它们很难正确集成到构建中。
请注意,默认情况下,自定义目标将被完全跳过,您只能显式构建它们(例如通过调用make <my_target_name>)。您可以通过ALL在调用时指定选项来使它们成为默认构建目标的一部分add_custom_target,或者根据您的自定义目标创建另一个目标(该目标已经是默认构建目标的一部分)。
您通常无法通过依赖其输出工件之一来添加此依赖项,因为就 CMake 而言,自定义目标不会生成任何内容。这就是为什么你必须使用更古老的东西add_dependencies。
如果
add_custom_target()总是被执行,那么将它与 一起使用有什么实际目的吗add_dependencies()?
add_custom_target()则不会自动构建。add_dependencies(A B)确保目标将在目标之前B构建,因此目标可以安全地使用为目标创建的文件。AAB| 归档时间: |
|
| 查看次数: |
3755 次 |
| 最近记录: |