【发布时间】:2018-07-10 22:18:09
【问题描述】:
我正在从 CMake 脚本为 QtCreator 生成 .pro 文件。稍后将使用 QMAKE_EXTRA_COMPILERS 指令生成项目中的文件(仅当文件比它们旧时,才使用外部工具从其他文件重新生成文件)。
- 为确保要生成的文件在没有警告的情况下导入 QtCreator 项目,我需要创建它(否则 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内置命令:
execute_process(COMMAND ${CMAKE_COMMAND} -E touch ${output_file_path} -t 0001010101)。你不能在一个命令中触摸所有文件吗? -
@KamilCuk:您应该将此作为答案发布。即使使用 cmake 内置命令实际上并没有加快速度,它也回答了这个问题。一次触摸多个文件实际上是加快速度的好方法,让我节省了几秒钟......
标签: cmake