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