【问题标题】:qmake touch function on windowsWindows上的qmake触摸功能
【发布时间】:2016-03-23 14:58:31
【问题描述】:

qmake 手册记录了一个touch 函数来更新文件的时间戳,请参阅:touch(filename, reference_filename)。推荐here更新文件时间戳,例如:

version.commands = touch $$version.target

注意:qmake 手册记录了两个参数,例如:

version.commands = touch $$version.target $$version.depends

但是,我无法使用任一调用使 touch 函数在 Windows 上运行。我怀疑qmake 只是调用linux touch 命令,因为它在Fedora 23 上运行良好。

一种解决方法是在 Windows 上创建一个touch.cmd 命令文件,例如:

@COPY /B %1+,, %1

并在.pro 文件中使用以下内容:

version.commands = $$system(touch $$version.target)

但我更喜欢使用 qmake touch 函数...

.pro 文件中调用它以使其在 Windows 上运行的正确方法是什么?

【问题讨论】:

  • system(@COPY /B file.name "+,,") - 对我来说很好
  • 它对我也有用@oklas,但它仍然不是难以捉摸的qmake touch。继续bash on Windows 10...

标签: qt qmake


【解决方案1】:

在使用 qmake 时,记住在调用 qmake 时发生了什么以及在随后的 make/nmake 调用期间发生了什么是至关重要的。

version.commands = 之后指定的任何内容都将在调用 make 时执行。

另一方面,touch() 是一个 qmake 函数,将在您运行 qmake 时被调用。

查看截至今天的 Qt 源代码开发分支,在 Qt 本身中只有 4 次 touch() 使用,全部在 qtbase/mkspecs/features 目录中,在 .commands 构造的上下文中没有。

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 2020-04-13
    • 2013-11-28
    • 2018-08-02
    • 1970-01-01
    • 2021-10-16
    • 2016-02-28
    • 2020-03-26
    相关资源
    最近更新 更多