meson icon indicating copy to clipboard operation
meson copied to clipboard

`qt.preprocess` does not handle resource renaming well

Open pobrn opened this issue 4 months ago • 0 comments

Describe the bug

When a file is renamed that is referenced from a qrc file, ninja exits with an error: "missing and no known rule to make it".

To Reproduce

$ cat > meson.build <<EOF
project('repro', ['cpp'])

qt6 = import('qt6')
qt6_dep = dependency('qt6', modules: ['Core'])

qres = qt6.preprocess(qresources: ['a.qrc'])

executable('main', 'main.cpp', qres, dependencies: qt6_dep)
EOF
$ cat > a.qrc <<EOF
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
	<file>test.txt</file>
</qresource>
</RCC>
EOF
$ cat > main.cpp <<EOF
int main() { }
EOF
$ touch test.txt
$ meson setup build
$ meson compile -C build
# this works
$ mv test.txt test2.txt # rename file
$ sed -i 's/test.txt/test2.txt/' a.qrc
$ meson compile -C build
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /tmp/asd2/build
ninja: Entering directory `/tmp/asd2/build'
ninja: error: '/tmp/asd2/test.txt', needed by 'qt6-a_qrc.cpp', missing and no known rule to make it

Expected behavior

The build finishes correctly.

system parameters

  • native build
  • Linux
  • python 3.13
  • meson 1.9.2
  • ninja 1.13.2

pobrn avatar Dec 09 '25 21:12 pobrn