.qml ファイルのキャッシュを消す方法
Qt Quick のソースコードである .qml ファイルはテキストファイルで、アプリケーションの実行時に QQmlEngine というクラスを利用して、インタープリタとして実行されます。
ただ、起動時に毎回毎回ファイルのパースを行うとパフォーマンスが遅くなるため、Qt 5.8 で、.qml と .js については実行時にパース結果をキャッシュとしてストレージに保存するようになりました。
ちなみに Qt 5.9 では、実行時ではなくコンパイル時にキャッシュを生成できるようになっています。
キャッシュファイルの保存場所
デフォルトではキャッシュファイルは、QStandardPaths::writableLocation(QStandardPaths::CacheLocation) 以下の “qmlcache” というディレクトリの下に生成されます。
Windows の場合は、”C:/Users/<USER>/AppData/Local/<APPNAME>/cache/qmlcache/”
Mac の場合は、”~/Library/Caches/<APPNAME>/qmlcache/”
Linux の場合は、”~/.cache/<APPNAME>/qmlcache/”
という感じで、ユーザーとアプリケーションに応じた位置になります。
※ この保存場所は環境変数 QML_DISK_CACHE_PATH でキャッシュの保存場所を変更することが可能です。
私のメインの開発マシンでは、様々アプリケーションに含まれる .qml と .js のキャッシュが生成されて、以下の通りそれなりの容量に膨れ上がっていました。
$ find $HOME/.cache -name “qmlcache” | du -sh
5.1G .
キャッシュを消そう
.qml や .js のキャッシュは、実行時点での各ファイルのハッシュで管理されているため、開発時に頻繁に更新され、実行されると、その都度キャッシュが生成されてしまいます。
キャッシュはあくまでもキャッシュで、存在しなければまた自動的に生成されるものですので、思い切って全部消してみましょう。
$ find $HOME/.cache -name “qmlcache” | rm -rf
※ 開発時には QML_DISABLE_DISK_CACHE 環境変数を設定しキャッシュの生成を抑制するのもいいかもしれません。
※ もしくは、少し手間が増えますが QML_DISK_CACHE_PATH 環境変数を、ビルドディレクトリ直下に指定しておくというのもいい方法かもしれません。