在构建期间使用qmake删除目录内容

时间:2015-09-23 18:54:46

标签: qt qt4 qmake del

我希望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/*.*")

它无法正常工作。我查看了Compile Output窗口并看到了这个文本:

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

为什么会出现此提示,如何通过它?

仅供参考,'slasher'函数只是一个方便的函数,可以在Windows机器上将斜杠转换为反斜杠。

1 个答案:

答案 0 :(得分:0)

显然,Windows del命令在使用全局通配符时需要提示。您可以通过在Windows中的删除调用中添加/Q标志来禁止此提示,如下所示:

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

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

修改 我刚刚发现如果你在PRO文件中调用这个语法两次,编译器就会抱怨。我的解决方法是将/Q移动到PRO文件的最后一个自己的QMAKE_CLEAN调用中。它通过在del /Q期间对clean进行额外调用而使qmake感到困惑,但似乎按预期工作。

例如......

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

...将删除stuff1stuff2的全部内容。