CMP0135

添加于版本 3.24。

当使用 URL 下载方法与 ExternalProject_Add()FetchContent_Declare() 命令时,CMake 3.23 及更低版本会将解压内容的 timestamps 设置为与 archive 中的 timestamps 相同。当 URL 更改时,新的 archive 会被下载和解压,但解压内容的 timestamps 可能不比之前的内容新。任何依赖于解压内容的东西可能不会被重新构建,即使内容可能已更改。

CMake 3.24 及更高版本倾向于将所有解压内容的 timestamps 设置为解压的时间。这确保了每当 URL 更改时,任何依赖于解压内容的东西都将被重新构建。

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

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

注意

策略的 OLD 行为根据定义是 deprecated by definition,并可能在未来的 CMake 版本中移除。