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)? 

このプロンプトが表示される理由と、それを回避するにはどうすればよいですか?

参考までに、「スラッシャー」関数は、Windows マシンでスラッシュをバックスラッシュに変換する便利な関数です。

4

1 に答える 1

0

グローバル ワイルドカードを使用する場合、Windowsdelコマンドにはプロンプトが必要なようです。/Q次のようなウィンドウで削除呼び出しにフラグを追加することで、このプロンプトを抑制することができます。

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

せいぜい大ざっぱですが、うまくいきます。誰かが Qt4 で別の方法を知っていれば、喜んで聞いてくれます。

編集 PROファイルでこの構文を2回呼び出すと、コンパイラが文句を言うことがわかりました。私の回避策は/Q、独自のQMAKE_CLEAN呼び出しで PRO ファイルの最後に移動することです。del /Qduringへの追加の呼び出しを引き起こすことにより、qmake を無害に混乱させcleanますが、期待どおりに動作するように見えます。

例えば...

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

... と の内容全体を削除しstuff1ますstuff2

于 2015-09-23T18:54:45.617 に答える