根据the documentation , add_custom_target()
创建一个“始终认为已过期”的目标。但是,文档 also says那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
反而。
关于cmake - 为什么 add_custom_target 总是被认为是过时的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48758263/