我希望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机器上将斜杠转换为反斜杠。
答案 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
...将删除stuff1
和stuff2
的全部内容。