cmake 如何编写一个自定义命令,使其在文件A比文件B新时运行?

w6mmgewl  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(106)

我需要编写一个自定义命令,每当文件A比文件B新时运行该命令。
如何在CMake中执行此操作?

iszxjhcz

iszxjhcz1#

听起来您需要类似于以下内容的内容:

add_custom_command(OUTPUT B
  COMMAND ${CMAKE_COMMAND} -Dinput=A -P script_that_generates_B.cmake
  DEPENDS A
  )

其中,“B”是输出文件的完整路径,“A”是某个输入文件的完整路径,而命令是在生成时运行的,以便在A发生更改时生成B。
为了使生成B的规则在生成时执行,其他内容也必须依赖于B。它应该显示为“all”中的add_custom_target的DEPENDS,或者显示为add_library或add_executable命令的源文件,以触发命令运行。
编辑:
您也可以使用

if(file1 IS_NEWER_THAN file2)

IF命令的文档相当长,但是在本页搜索IS_NEWER_THAN会得到以下内容:
“如果file1比file2新,或者两个文件中有一个不存在,则为True。只有完整路径的行为定义良好。”

相关问题