[Interest] creating QML module in a subdirectory of backing target
Alexandru Croitor
alexandru.croitor at qt.io
Thu Aug 15 10:38:50 CEST 2024
Hi,
As far as I know this currently doesn't work, and is a variation of the following bug report:
https://bugreports.qt.io/browse/QTBUG-122702
After a very quick scan, I believe the docs don't mention this limitation.
The happy path for qml modules is to have the library / executable created in the same subdirectory as the call to qt_add_qml_module.
If the qml module needs to be separate from the backend C++ code, i believe the suggested way is to create two libraries:
one just for the C++ code, and another for the Qml code which references the types from the other library via QML_FOREIGN,
as described at https://doc.qt.io/qt-6/qt-generate-foreign-qml-types.html
But maybe someone from the qml team can offer better advice.
> On 14. Aug 2024, at 14:04, Stefan Seefeld <stefan at seefeld.name> wrote:
>
> hello,
>
> in a large CMake / Qt project of mine, I'm building a (shared) library in some directory `A`.
> Now I want to add a QML module for that, but due to various constraints want to do that in a subdirectory `A/qml`.
> That is, I have
>
> A/
> ├── CMakeLists.txt
> ├── qml
> │ ├── CMakeLists.txt
>
> where `A/CMakeLists.txt` calls `addLibrary(A ...)`, and `A/qml/CMakeLists.txt` calls `qt_add_qml_module(A ...)`
>
> This eventually bails with the error
>
> ```
> ... No rule to make target '.../A/A_qmltyperegistrations.cpp`, needed by 'CMakeFiles/A.dir/a_qmltyperegistrations.cpp.o'
> ```
> If I merge the definition of `qml_add_qml_module` in the outer CMakeLists.txt file, everything is compiling fine.
> Am I missing something ? Is this is known limitation of the build logic ?
>
> Thanks for any hints,
>
> --
> ...ich hab' noch einen Koffer in Berlin...
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> https://lists.qt-project.org/listinfo/interest
More information about the Interest
mailing list