CMP0135

在版本 3.24 中添加。

当结合 URL 下载方法使用 ExternalProject_Add()FetchContent_Declare() 命令时,CMake 3.23 及其之前的版本会将提取内容的时间戳设置为与归档时间戳相同。当 URL 发生变化时,新的归档文件会下载并提取,但提取内容的时间戳可能不会比以前的内容新。任何依赖提取内容的内容都可能不会重建,即使内容可能发生变化也是如此。

CMake 3.24 及其后续版本更喜欢将所有提取内容的时间戳设置为提取时间。这确保了任何依赖提取内容的内容都会在 URL 发生变化时重建。

ExternalProject_Add()FetchContent_Declare() 命令的 DOWNLOAD_EXTRACT_TIMESTAMP 选项可用于明确指定如何处理时间戳。当未给出 DOWNLOAD_EXTRACT_TIMESTAMP 时,此策略控制默认行为。此策略的 OLD 行为是从归档文件中恢复时间戳。NEW 行为将提取内容的时间戳设置为提取时间。

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

注意

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