我需要编写一个自定义命令,每当文件A比文件B新时运行该命令。如何在CMake中执行此操作?
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。只有完整路径的行为定义良好。”
1条答案
按热度按时间iszxjhcz1#
听起来您需要类似于以下内容的内容:
其中,“B”是输出文件的完整路径,“A”是某个输入文件的完整路径,而命令是在生成时运行的,以便在A发生更改时生成B。
为了使生成B的规则在生成时执行,其他内容也必须依赖于B。它应该显示为“all”中的add_custom_target的DEPENDS,或者显示为add_library或add_executable命令的源文件,以触发命令运行。
编辑:
您也可以使用
IF命令的文档相当长,但是在本页搜索IS_NEWER_THAN会得到以下内容:
“如果file1比file2新,或者两个文件中有一个不存在,则为True。只有完整路径的行为定义良好。”