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 中被移除。