CMP0135 — CMake 4.3.0 Documentation

# CMP0135

Added in version 3.24.

When using the `URL` download method with the `ExternalProject_Add()` or `FetchContent_Declare()` commands, CMake 3.23 and below sets the timestamps of the extracted contents to the same as the timestamps in the archive. When the `URL` changes, the new archive is downloaded and extracted, but the timestamps of the extracted contents might not be newer than the previous contents. Anything that depends on the extracted contents might not be rebuilt, even though the contents may change.

CMake 3.24 and above prefers to set the timestamps of all extracted contents to the time of the extraction. This ensures that anything that depends on the extracted contents will be rebuilt whenever the `URL` changes.

The `DOWNLOAD_EXTRACT_TIMESTAMP` option to the `ExternalProject_Add()` and `FetchContent_Declare()` commands can be used to explicitly specify how timestamps should be handled. When `DOWNLOAD_EXTRACT_TIMESTAMP` is not given, this policy controls the default behavior. The `OLD` behavior for this policy is to restore the timestamps from the archive. The `NEW` behavior sets the timestamps of extracted contents to the time of extraction.

This policy was introduced in CMake version 3.24. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake warns, and uses `OLD` behavior.

Note

The `OLD` behavior of a policy is deprecated by definition and may be removed in a future version of CMake.