Open tpoignonec opened 2 months ago
From CMake documentation of policy CMP0135:
New in version 3.24.
When using the URL download method with the [ExternalProject_Add()](https://cmake.org/cmake/help/latest/module/ExternalProject.html#command:externalproject_add) or [FetchContent_Declare()](https://cmake.org/cmake/help/latest/module/FetchContent.html#command: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()](https://cmake.org/cmake/help/latest/module/ExternalProject.html#command:externalproject_add) and [FetchContent_Declare()](https://cmake.org/cmake/help/latest/module/FetchContent.html#command: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()](https://cmake.org/cmake/help/latest/command/cmake_policy.html#command:cmake_policy) or [cmake_minimum_required()](https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html#command:cmake_minimum_required). If it is not set, CMake warns, and uses OLD behavior.
Two easy options: 1) fix policy to 3.23 for CMP0135 (legacy) 2) always set parameter to TRUE. That seems to be better as there is no obvious downside...
A new
DOWNLOAD_EXTRACT_TIMESTAMP
option was added to theFetchContent
CMake tool.TODO: check doc and make code compliant.