CMake条件:比较文件的时间戳

gar*_*h0p 5 cmake

我需要编写一个自定义命令,只要文件A比文件B更新,就可以运行.如何在CMake中执行此操作?谢谢!

DLR*_*ave 6

听起来你想要类似于此的东西:

add_custom_command(OUTPUT B
  COMMAND ${CMAKE_COMMAND} -Dinput=A -P script_that_generates_B.cmake
  DEPENDS A
  )
Run Code Online (Sandbox Code Playgroud)

其中"B"是输出文件的完整路径,"A"是某个输入文件的完整路径,并且该命令是在构建时运行以在A发生更改时生成B.

为了使生成B的规则在构建时执行,其他东西也必须依赖于B. 它应该作为add_custom_target的DEPENDS出现在"all"中,或者作为add_library或add_executable命令的源文件来触发命令运行.

编辑:

你也可以使用

if(file1 IS_NEWER_THAN file2)
Run Code Online (Sandbox Code Playgroud)

如有必要,在CMake配置时构造.IF命令的文档相当冗长,但在此页面上搜索IS_NEWER_THAN会产生这个块:

"如果file1比file2更新,或者如果两个文件中的一个不存在,则为True.行为仅针对完整路径定义良好."