FindPatch

3.10 版本新增。

查找用于将 diff 补丁应用于原始文件的 patch 命令行可执行文件。

find_package(Patch [...])

导入的目标

此模块提供以下 导入目标

Patch::patch

封装 patch 命令行可执行文件的目标,仅在找到 patch 时可用。

在 4.0 版本中已更改: 此导入的目标仅在 CMAKE_ROLEPROJECT 时定义。

结果变量

此模块定义了以下变量

Patch_FOUND

一个布尔值,指示是否找到了 patch 命令行可执行文件。

缓存变量

以下缓存变量也可以设置

Patch_EXECUTABLE

指向 patch 命令行可执行文件的路径。

示例

查找 patch 命令并在进程中执行它

find_package(Patch)
if(Patch_FOUND)
  execute_process(
    COMMAND ${Patch_EXECUTABLE} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/src.patch
  )
endif()

例如,该导入的目标可以在 add_custom_command() 命令中使用,该命令会在某个构建规则依赖于其输出时修补指定的文件。

find_package(Patch)
if(TARGET Patch::patch)
  # Executed when some build rule depends on the src.c file.
  add_custom_command(
    OUTPUT src.c
    COMMAND Patch::patch -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/src.patch
    # ...
  )
endif()