In a project using QRC (with QML files in it) but without qtquickcompiler, modifying a QML file on disk and rebuilding has no apparent effect, because the application loads a stale .qmlc file from the cache at startup every time. When building with qtquickcompiler, or if using file:/ instead, there is no problem.
tar -xzf QmlStaleCacheRepro.tar.gz
./Blah # observe that it outputs 4
(edit Blah.qml to print a different number)
./Blah # it still outputs 4
When running the program under strace (which is how I discovered that such a thing as a "QML cache" exists at all), it prints the following:
[pid 14611] openat(AT_FDCWD, ":/Blah.qmlc", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 14611] openat(AT_FDCWD, "/home/glaebhoerl/.cache/Blah/qmlcache/439d39ea22727ec95950566b9a0ad8856cfdc5a5.qmlc", O_RDONLY|O_CLOEXEC) = 8
Apparently it is expecting to find the .qmlc file within QRC, and seemingly also treating the QRC path as a normal filesystem path.