首页 > 解决方案 > 如何从 CMake 更改文件时间戳?

问题描述

我正在从 CMake 脚本为 QtCreator 生成 .pro 文件。稍后将使用 QMAKE_EXTRA_COMPILERS 指令生成项目中的文件(仅当文件比它们旧时,才使用外部工具从其他文件重新生成文件)。

为此,我这样做:

file(WRITE ${output_file_path} "To be generated..." )
execute_process( COMMAND touch.exe ${output_file_path} -t 0001010101 )

但是,这execute_process( COMMAND touch.exe ${output_file_path} -t 0001010101 )需要一段时间。我的项目中有数百个这样的文件,并且评论这一execute_process行将我的 CMake 生成时间除以 2(0m45s 与 1m30s)。我敢打赌,外部进程的执行正在减慢速度......

有没有办法使用纯 CMake 命令更改文件时间戳?

标签: cmake

解决方案


cmake 内置命令是首选方式。您可以touch使用以下文件进行归档:

execute_process(COMMAND ${CMAKE_COMMAND} -E touch ${output_file_path} -t 0001010101)

这也适用于任何平台,独立于 linux 或 windows。

如果您有“数百个文件”,您可以通过提供带有多个参数的 touch 命令在一个语句中触摸它们,从而节省运行 make/build 系统命令的时间(更少的依赖关系来解决 cmake 构建系统:)。


推荐阅读