最近一直在學習QML,在Qt Creator中新建Qt Quick工程后,嘗試不斷地修改qml文件來進行試驗,qml文件需要反反復復的修改。
Qt Widget工程,如果修改了cpp代碼后,直接構建或者直接運行,編譯器都會重新編譯最新的代碼進而運行展示,但是qml工程卻不是這樣,每次修改qml文件后,直接build並不總是加載最新代碼,經常需要“清除-構建-運行”。
這是由於qml和前端javascript類似,具有緩存機制,加載的還是上次緩存中的內容。
官方文檔“https://doc.qt.io/qt-5/qtquick-deployment.html”給出了關於QML緩存的解釋:

翻譯如下:
QML緩存
QML運行時通過解析QML文檔並生成字節代碼來加載它們。大多數情況下,文檔自上次加載后沒有更改。
為了加快此加載過程,QML運行時為每個QML文檔維護一個緩存文件。此緩存文件包含已編譯的字節代碼和QML文檔結構的二進制表示。
此外,當多個應用程序使用相同的QML文檔時,代碼所需的內存在應用程序進程之間共享。緩存文件通過符合POSIX的操作系統上的mmap()系統調用或Windows上的CreateFileMapping()加載,從而節省大量內存。
每次加載更改的QML文檔時,都會自動重新創建緩存。
緩存文件位於QStandardPaths :: CacheLocation的子目錄中,名稱為“qmlcache”。
QML文檔的文件擴展名為.qmlc,導入的JavaScript模塊的文件擴展名為.jsc。
通過拿Everything在系統上搜索,果然如此:



我還沒有在Qt Creator中找到一鍵清除緩存后重新編譯的方法,找到后分享,也歡迎知道的大神給指點一下!
