Hi Stefan,

Here’s what works for me in Qt 6.5+:

In A/CMakeLists.txt:

                add_subdirectory(qml)

In A/qml/CMakeLists.txt:

                qt_add_library(qml STATIC)
                qt_add_qml_module(qml
                                URI qml
                                QML_FILES
                                                …
                )
                target_link_libraries(qml
                                PRIVATE
                                Qt6::Quick
                )
                target_link_libraries(${CMAKE_PROJECT_NAME}
                                PRIVATE
                                qmlplugin
                )

Instead of using add_library from the top-level CMakeLists.txt file, add the 
subdirectory. In the subdirectory’s CMakeLists.txt file, add a static library, 
add the qml module, then link the static library’s plugin to the application 
binary. Hence, the last bit of linking to ‘qmlplugin’. The tooling generates 
this in the build directory and it contains the necessary code to register the 
QML types and load the static library.

Hope that helps,
James

From: Interest <interest-boun...@qt-project.org> on behalf of Stefan Seefeld 
<ste...@seefeld.name>
Date: Wednesday, August 14, 2024 at 08:29
To: interestqt-project.org <interest@qt-project.org>
Subject: [Interest] creating QML module in a subdirectory of backing target
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,

--
[Image removed by sender.]

      ...ich hab' noch einen Koffer in Berlin...
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to