CMP0135

在 3.24 版本中添加。

当使用 URL 下载方法配合 ExternalProject_Add()FetchContent_Declare() 命令时,CMake 3.23 及更早版本会将提取内容的 timestamps 设置为与存档中的 timestamps 相同。当 URL 发生更改时,新存档会被下载并提取,但提取内容的 timestamps 可能不会比之前的内容更新。任何依赖于提取内容的内容,即使内容已更改,也可能不会被重新构建。

CMake 3.24 及更高版本倾向于将所有提取内容的 timestamps 设置为提取时的时间。这确保了任何依赖于提取内容的内容,在 URL 发生更改时都会被重新构建。

可以通过 ExternalProject_Add()FetchContent_Declare() 命令的 DOWNLOAD_EXTRACT_TIMESTAMP 选项来显式指定如何处理 timestamps。当没有给出 DOWNLOAD_EXTRACT_TIMESTAMP 时,此策略控制默认行为。此策略的 OLD 行为是从存档恢复 timestamps。 NEW 行为是将提取内容的 timestamps 设置为提取时的时间。

此策略在 CMake 3.24 版本中引入。它可以由 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake 会发出警告并使用 OLD 行为。

注意

策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。