Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-76025 Specify the QML language and write a prototype for a QML-to-C++ compiler
  3. QTBUG-96040

(qmltc) Support build infrastructure around object-creation compiler

    XMLWordPrintable

    Details

    • Type: Technical task
    • Status: Open
    • Priority: P2: Important
    • Resolution: Unresolved
    • Fix Version/s: 6.x
    • Component/s: QML: Compiler
    • Labels:

      Description

      qmltc must be integrated into the QML's CMake API:

      • The output of qmltc is .h and .cpp files that represent the compiled code
        • Executables: these files become part of the binary, allowing to #include the header file and build/link the definitions in the cpp file as part of the normal C++ compilation
        • Shared libraries: on top of just becoming a part of the binary, extra things are required
          • .h files become part of the "public includes" (CMake thing)
          • generated code must be exported thus Q_*_EXPORT macro is required for each generated class. most likely, every binary would need own independent export macro (to avoid collisions)
          • CMake-specific "flags" (a.k.a. target properties) might be required to distinguish qmltc-processed libraries from all others
        • Static libraries: similar to shared libraries. Might require additional care but, in general, rules are the same.
        • Applicable to all: qmldir of the qmltc-processed target must be available to qmltc (otherwise, type information may be missing)
      • QML module interaction
        • linking against a QML module automatically requires the usage of that module's qmldir AND C++ include directories (if there are C++ bits exposed to QML)
        • qml files (source code) of the module must be available to qmltc, meaning:
          • source code has to be available
          • (optional) list of compiled QML files (e.g. in a CMake target property)
        • for better user experience we might want to only deal with QML modules that are qmltc-processed ("there's an explicit flag that qmltc had compiled parts of that module OR the module's QML files are not used by qmltc")
      • The CMake API of qmltc must either be embedded into qt_add_qml_module() or rely on that function's meta information
        • there's an implicit dependency on qmldir generation

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              Assignee:
              agolubev Andrei Golubev
              Reporter:
              agolubev Andrei Golubev
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:

                  Gerrit Reviews

                  There are no open Gerrit changes