如何编写一个每当文件 A 比文件 B 新时运行的自定义命令?
我需要编写一个自定义命令,只要文件 A 比文件 B 新,该命令就会运行。
如何在 CMake 中执行此操作?
I need to write a custom command that runs whenever file A is newer than file B.
How do I do this in CMake?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
听起来你想要类似的东西:
其中“B”是输出文件的完整路径,“A”是某个输入文件的完整路径,并且该命令是在构建时运行以在 A 更改时生成 B 的命令。
为了使生成 B 的规则在构建时执行,其他东西也必须依赖于 B。它应该显示为“all”中的 add_custom_target 的依赖项,或者显示为 add_library 或 add_executable 命令的源文件以触发命令运行。
编辑:
如有必要,您还可以
在 CMake 配置时使用该构造。 IF 命令的文档相当冗长,但是 搜索IS_NEWER_THAN 的此页 会产生以下信息:
“如果 file1 比 file2 新,或者两个文件之一不存在,则为 True。仅针对完整路径明确定义行为。”
Sounds like you want something similar to this:
Where "B" is the full path to the output file, "A" is the full path to some input file, and the command is something that runs at build time to produce B whenever A changes.
In order for the rule producing B to be executed at build time, something else must depend on B also. It should appear either as a DEPENDS of an add_custom_target that is in "all" or as a source file to an add_library or add_executable command to trigger the command to run.
EDIT:
You can also use the
construct at CMake configure time, if necessary. The documentation of the IF command is rather lengthy, but searching on this page for IS_NEWER_THAN yields this nugget:
"True if file1 is newer than file2 or if one of the two files doesn't exist. Behavior is well-defined only for full paths."