1

我希望 QMAKE_CLEAN 清空/删除我的构建目录中的数据目录。我已经清除了构建目录中的所有 DLL,如下所示:

win32: {
    Debug: {
        QMAKE_CLEAN += $$slasher("$${OUT_PWD}/debug/*.dll")
    } else {
        QMAKE_CLEAN += $$slasher("$${OUT_PWD}/release/*.dll")
    }
}

这很好用。

但是,当我尝试像这样删除目录的全部内容时:

QMAKE_CLEAN += $$slasher("Q:/stuff/*.*")

它无法工作。我查看了编译输出窗口并看到了以下文本:

Q:\stuff\*.*, Are you sure (Y/N)? 

为什么会出现此提示,我该如何克服?

仅供参考,'slasher' 功能只是在 Windows 机器上将正斜杠转换为反斜杠的便捷功能。

4

1 回答 1

0

显然,Windowsdel命令在使用全局通配符时需要提示。您可以通过将/Q标志添加到窗口中的删除调用来抑制此提示,如下所示:

QMAKE_CLEAN += "$$slasher("Q:/stuff/*.*") /Q"

它充其量是粗略的,但它有效。如果有人知道 Qt4 中的另一种方式,我会很高兴听到它。

编辑 我刚刚发现,如果您在 PRO 文件中两次调用此语法,编译器会报错。我的解决方法是/Q在自己的QMAKE_CLEAN调用中将 移动到 PRO 文件的最后。del /Q它通过引起对during的额外调用来善意地混淆 qmake clean,但似乎按预期工作。

例如...

QMAKE_CLEAN += "$$slasher("Q:/stuff1/*.*")"
QMAKE_CLEAN += "$$slasher("Q:/stuff2/*.*")"
QMAKE_CLEAN += /Q

stuff1...将删除和的全部内容stuff2

于 2015-09-23T18:54:45.617 回答