[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