Hi,
I've been continuing to experiment with the Qt6 QML capabilities and I hit
the following problem. I have a shared library with a couple of qml files,
but for some reason I don't get them installed and when I run the
application I get the module not installed error.

While trying to figure out what I did wrong I listed the resource and I
don't have a path for the library's module at all, so I imagine that'd be
the reason for the error. I do get a qmldir for a C++ piece of code (in
another shared library) fine, though, so I assume something's not correct
with my project, but for the life of me I can't seem to understand what.
Here's what I have for the problematic subproject:

add_library(TscUi SHARED

    TscUi.h

    TscUi.cpp # This is just a dummy, without it I don't get a .lib file at all

)

add_library(Tsc::Ui ALIAS TscUi)


set_target_properties(TscUi PROPERTIES

    VERSION ${PROJECT_VERSION}

    SOVERSION ${PROJECT_VERSION_MAJOR}

)

target_include_directories(...)

target_compile_definitions(...)


target_link_libraries(TscUi

    PRIVATE Qt::Qml Tsc::Core

)


qt_add_qml_module(TscUi

    URI Tsc.Ui

    VERSION ${PROJECT_VERSION}

    QML_FILES

        Main.qml

        BottomBar.qml

    NO_PLUGIN

)


I've added the NO_PLUGIN, as I explicitly link against this, but for what
it's worth removing it doesn't seem to make any difference. In the
tscui_qmltyperegistrations.cpp I see the module being added, but no types
(in contrast to the code that exposes QML things from C++), is this correct:

Q_QMLTYPE_EXPORT void qml_register_types_Tsc_Ui()
{
    qmlRegisterModule("Tsc.Ui", 0, 0);
    qmlRegisterModule("Tsc.Ui", 0, 1);
}

Additionally when I configure I get the following warning:
CMake Warning at
C:/QtDesktop/6.2.2/msvc2019_64/lib/cmake/Qt6Qml/Qt6QmlMacros.cmake:694
(message):
  The TscUi target is a QML module with target path Tsc/Ui.  It uses an
  OUTPUT_DIRECTORY of C:/Programming/tsc/build/debug/TscUi, which should end
  in the same target path, but doesn't.  Tooling such as qmllint may not
work
  correctly.
Call Stack (most recent call first):
  C:/QtDesktop/6.2.2/msvc2019_64/lib/cmake/Qt6Qml/Qt6QmlMacros.cmake:1453
(_qt_internal_target_enable_qmllint)
  C:/QtDesktop/6.2.2/msvc2019_64/lib/cmake/Qt6Qml/Qt6QmlMacros.cmake:576
(qt6_target_qml_sources)
  C:/QtDesktop/6.2.2/msvc2019_64/lib/cmake/Qt6Qml/Qt6QmlMacros.cmake:627
(qt6_add_qml_module)
  TscUi/CMakeLists.txt:42 (qt_add_qml_module)

Manually forcing

qt_add_qml_module(TscUi

    URI Tsc.Ui

    ...    OUTPUT_DIRECTORY

        Tsc/Ui

)disposes of it, but also doesn't seem to make any difference for my
registration problem.
If I load from the filesystem the files are parsed properly and
produce the expected result.

As you probably can tell from the paths, I'm using Qt 6.2.2 (from the
maintenance tool) on windows with msvc19.
Any ideas what I did wrong?

Thanks,
Konstantin.
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to