在 qmake 期间检测修改的文件

Detecting modified files during qmake

qt 如何检测构建是否必要,例如, 如果修改了源文件或我的资源文件 (.qrc)在最后一次构建之后?每个文件都有一个标志吗? 我真正想做的是,通过将此添加到 .pro 文件来发送资源编译的系统命令:

system(rcc -binary -no-compress resource.qrc -o resource.rcc)

而且我只想在 resource.qrc 文件在最后一次 qmake 之后修改时才这样做。这可能吗?如何实现?

最终版本应该是:

if(RESOURCE_MODIFIED) {
   COMPILE RESOURCE
}

QMake 创建 GNU Makefile(假设您在默认模式下直接使用 Qt Creator 或 QMake)并且生成的 Makefile 将包含将要创建的目标列表、它们的依赖项以及创建目标的规则。构建时,Make 检查是否有任何依赖项的文件时间戳比目标的文件时间戳更新,并将 运行 规则重新创建目标。

Kuba 已经在评论中提到了它 - 您可能正在寻找 add a custom target

mytarget.target = resource.rcc
mytarget.commands = rcc -binary -no-compress resource.qrc -o resource.rcc
mytarget.depends = resource.qrc

QMAKE_EXTRA_TARGETS += mytarget

另一个的回答,完整的正确答案是下面的代码:

mytarget.target = resource.rcc
mytarget.commands = rcc -binary -no-compress resource.qrc -o resource.rcc
mytarget.depends = resource.qrc

QMAKE_EXTRA_TARGETS += mytarget
PRE_TARGETDEPS += resource.rcc

如果 .qrc 文件被修改并且 make 在编译应用程序时自动执行,则自定义目标将仅被重建。