mafulechka
mafulechka6. Mai 2020 04:36

Docker von QtCreator erstellen

Drücken Sie auf Ihrem Entwicklungscomputer Strg+R (Ausführen) in QtCreator, um Ihre Qt-Anwendung zu erstellen und auszuführen. Wenn Sie eine Anwendung auf einem eingebetteten System ausführen möchten, müssen Sie vier Aufgaben ausführen:

• Erstellen Sie eine Qt-übergreifende Anwendung für das eingebettete Zielsystem in einem Docker-Container.
• Beenden Sie die Anwendung auf dem Zielsystem.
• Anwendung mit scp vom Entwicklungs-PC auf das Zielsystem kopieren.
• Führen Sie die Anwendung auf dem Zielsystem aus.

Möchten Sie in QtCreator Strg+R drücken und QtCreator die obigen vier Schritte für Sie erledigen lassen? Natürlich taten sie es! Dieser Artikel zeigt Ihnen, wie es geht. Das Starten einer Anwendung auf einem eingebetteten System ähnelt dem Starten einer Anwendung auf einem PC.


Konfiguration

Auf Industrieterminals (z. B. Computerbildschirmen) werden Anwendungen zur Überwachung und Steuerung von Maschinen ausgeführt. Sie laufen oft auf Intel- oder AMD-Prozessoren mit x86_64-Architektur. Ubuntu ist eine ziemlich natürliche Wahl für ein Betriebssystem. Die Ubuntu-Desktop-Benutzeroberfläche ist möglicherweise deaktiviert, da das Terminal nur die Hauptanwendung startet und es möglicherweise eine oder zwei Unteranwendungen gibt.

Eine Entwicklungsumgebung für Industrieterminals einzurichten ist ganz einfach. Auf Ihrem Entwicklungs-PC wird eine Version von Ubuntu ausgeführt (Entwickler installiert: Ubuntu 16.04). Auf dem Zielsystem läuft eine andere Version von Ubuntu (vom Entwickler: Ubuntu 18.04). Eine Cross-Build-Umgebung in einem Docker-Container ist nichts anderes als eine Ubuntu 18.04-Umgebung, in der alle Pakete installiert sind, um die Qt-Bibliotheken und die Anwendung zu erstellen.

Sie brauchen nicht einmal ein maßgeschneidertes Terminal. Sie benötigen lediglich zwei Linux-PCs, die per (W)LAN verbunden sind und per OpenSSH miteinander kommunizieren können.

Wenn das Zielsystem auf einem ARM-SoC läuft, wird es etwas kniffliger, eine Cross-Build-Umgebung in einem Docker-Container einzurichten. Sie müssen das Qt SDK erstellen (z. B. durch Erstellen eines Ziels meta-toolchain-qt5 Yocto (target) ) und das Qt SDK in einem Docker-Container installieren. Der Container verbirgt die Cross-Build-Umgebung vor QtCreator. QtCreator weiß nicht, ob der Container den Cross-Compiler für ARM-Ziele oder den nativen Compiler für Intel-Ziele aufruft.

Wenn Sie das Beispielprojekt oder Ihr eigenes Projekt verfolgen möchten, müssen die folgenden Voraussetzungen erfüllt sein.

Sie installieren Docker wie hier beschrieben auf Ihrem Entwicklungscomputer.

Sie erstellen ein Arbeitsverzeichnis (für einen Entwickler: /public/Work ) auf Ihrem Entwicklungs-PC. Sie klonen das Repository mit dem Beispielprojekt oder Ihrem Projekt in Ihr Arbeitsverzeichnis.

$ cd /public/Work
$ git clone https://github.com/bstubert/qtcreator-with-docker.git
$ cd qtcreator-with-docker

Das Projektverzeichnis enthält ein Dockerfile. Setzen Sie WORKDIR auf die letzte Zeile Ihres Arbeitsverzeichnisses. Dies ist wichtig, wie Sie in den folgenden Abschnitten sehen werden. Für einen Entwickler sieht die letzte Zeile so aus:

WORKDIR /public/Work

Anschließend folgen Sie dieser Beschreibung, um das Docker-Image qt-ubuntu-18.04-ryzen zu erstellen und verwenden dieses Image zum Erstellen verschiebbarer Qt-Bibliotheken (Qt 5.14 oder höher). Beim Erstellen von Qt erhalten Sie den Tarball qt-5.14.1-ubuntu-18.04-ryzen.tgz , den Sie in Ihr Arbeitsverzeichnis entpacken.

$ cd /public/Work
$ tar xf /path/to/qt-5.14.1-ubuntu-18.04-ryzen.tgz

Beim Entpacken werden die Qt-Bibliotheken im Verzeichnis /public/Work/qt-5.14.1 installiert.

Sie haben eine funktionierende OpenSSH-Verbindung zwischen Ihrem PC und dem Zielsystem. Die Passwort-Authentifizierung funktioniert einwandfrei.

Docker-Wrapper für CMake

Wenn Sie eine Qt-Anwendung erstellen und installieren, ruft QtCreator CMake auf:

• Makefiles (Make-Dateien) erstellen. Es verursacht:
cmake /public/Work/qtcreator-with-docker '-GCodeBlocks - Unix-Makefiles '
in einem temporären Verzeichnis, zum Beispiel /tmp/QtCreator-jZQYdh/qtc-cmake-caIYzSxO .
• Kompilieren und verknüpfen Sie die Qt-Anwendung. Es verursacht:
cmake --build . --Ziel auf alle
im Build-Verzeichnis, zum Beispiel /public/Work/build-RelocatableQt-Qt_5_14_1-Debug .
• Installieren Sie die Qt-Anwendung und ihre unterstützenden Dateien. Es verursacht:
cmake --build . --target install
im Build-Verzeichnis.

Die Idee ist, CMake in einem Docker-Container aufzurufen. Bevor QtCreator CMake aufruft, wechselt es zu einem bestimmten Verzeichnis auf dem Entwicklungscomputer oder Host. Dieses Verzeichnis muss an den Container übergeben werden, damit CMake an der richtigen Stelle innerhalb des Containers aufgerufen werden kann. Das CMake-Shell-Skript dr-cmake führt Folgendes aus.

#!/bin/bash
docker run --rm -v /public/Work:/public/Work -v/tmp:/tmp -w $(pwd) qt-ubuntu-18.04-ryzen cmake $@

Die Optionen -v /public/Work:/public/Work und -v/tmp:/tmp spiegeln die Arbeits- und temporäre Verzeichnisstruktur vom Host bis zum Container wider. Die Option w $(pwd) übergibt das Hostverzeichnis, in dem QtCreator CMake aufruft, als aktuelles Arbeitsverzeichnis an den Docker-Container. Docker führt cmake mit den $@-Argumenten aus, die an das dr-cmak e-Skript übergeben werden.

Das Skript dr-cmake übersetzt QtCreator-Aktionen auf dem Hostcomputer in die gleichen Aktionen im Docker-Container. Diese Übersetzung funktioniert nur, weil der Hostcomputer und der Docker-Container dieselbe Verzeichnisstruktur haben.

Kopieren Sie das Wrapper-Skript dr-cmake in ein Verzeichnis in $PATH (zB ~/bin) und vergewissern Sie sich, dass das Skript ausführbar ist.

SSH-Zugriff auf das Zielsystem (Target System)

QtCreator verwendet OpenSSH, um Dateien vom Entwicklungs-PC auf das Zielsystem zu kopieren. Daher muss OpenSSH sowohl auf Ihrem Computer als auch auf dem Zielcomputer installiert sein. QtCreator funktioniert nicht mit Dropbear, einer leichtgewichtigen OpenSSH-Alternative für eingebettete Systeme.

Für die SSH-Anmeldung bietet QtCreator Passwortauthentifizierung und Public-Key-Authentifizierung. Bei der Kennwortauthentifizierung müssen Sie jedes Mal ein Kennwort eingeben, wenn Sie eine Anwendung auf einem Zielsystem bereitstellen. Das wird schnell ermüdend. Sie möchten also die Authentifizierung mit öffentlichem Schlüssel verwenden.

Dazu erstellen Sie auf Ihrem PC mit ssh-keygen private (private) und öffentliche (public) Schlüssel.

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/burkhard/.ssh/id_rsa): /home/burkhard/.ssh/touch21-id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/burkhard/.ssh/touch21-id_rsa.
Your public key has been saved in /home/burkhard/.ssh/touch21-id_rsa.pub.
...

Sie lassen die Passphrase leer, indem Sie die Eingabetaste drücken und den SSH-Agenten über den neuen Schlüssel informieren.

$ ssh-add ~/.ssh/touch21-id_rsa

Kopieren Sie den öffentlichen Schlüssel auf das Zielsystem.

$ scp ~/.ssh/touch21-id_rsa.pub benutzer@192.168.1.82:/home/benutzer/.ssh

Ersetzen Sie benutzer und 192.168.1.82 durch die IP-Adresse des Zielsystems durch Ihren Benutzernamen auf dem Zielsystem.

Melden Sie sich am Zielsystem an und fügen Sie den öffentlichen Schlüssel zur Datei ~/.ssh/authorized_keys hinzu.

On host:
$ ssh benutzer@192.168.1.82
=> Enter your password

On target:
# cat ~/.ssh/touch21-id_rsa.pub > ~/.ssh/authorized_keys

Bei der nächsten Anmeldung am Zielsystem müssen Sie kein Passwort mehr eingeben. SSH prüft, ob der sich anmeldende Benutzer den privaten Schlüssel eines der öffentlichen Schlüssel hat, die in ~/.ssh/authorized_keys gespeichert sind. QtCreator verwendet denselben Mechanismus, um Anwendungsdateien bereitzustellen.

Erstellen eines Docker-Qt-Kits

Sie müssen eine Suite definieren, die das dr-cmake-Skript anstelle von cmake verwendet und weiß, wie man sich mit SSH beim Zielsystem anmeldet, Qt-Anwendungsdateien und -Bibliotheken auf dem Zielsystem bereitstellt.

Setup: CMake

Öffnen Sie das Dialogfeld Extras > Optionen > Kits > CMake (Extras > Optionen > Kits > CMake) * und klicken Sie auf die Schaltfläche Hinzufügen. Füllen Sie die Felder wie im Screenshot gezeigt aus und klicken Sie auf die Schaltfläche Anwenden*.

Einstellung: Qt-Version

Gehen Sie zum einstufigen Dialog Extras > Optionen > Kits > Qt-Versionen (Extras > Optionen > Kits > Qt-Versionen) * und klicken Sie auf die Schaltfläche * Hinzufügen (Hinzufügen) . Navigieren Sie zur QMake-Binärdatei der Version von Qt, die Sie in Ihrem Arbeitsverzeichnis installiert haben. Beispielsweise befindet sich das QMake eines Entwicklers unter /public/Work/qt-5.14.1/bin/qmake . Stellen Sie Versionsnamen Docker voran, damit diese Version von Qt leicht erkennbar ist. Klicken Sie auf die Schaltfläche Übernehmen*, um die Konfiguration zu speichern.

Einstellung: Gerät

Gehen Sie zum Dialog Extras > Optionen > Geräte (Extras > Optionen > Geräte) , um Informationen für die Anmeldung bei SSH hinzuzufügen. Klicken Sie auf der Registerkarte Geräte auf die Schaltfläche Hinzufügen , wählen Sie in einem separaten Popup-Dialogfeld Generisches Linux-Gerät aus und klicken Sie auf die Schaltfläche Assistent starten . Für einen Entwickler sieht die erste Seite des Assistenten so aus:

Sie haben unterschiedliche Werte für Name, IP-Adresse und Benutzername. Klicken Sie auf die Schaltfläche Weiter , um zur zweiten Seite des Assistenten zu gelangen. Sie navigieren zu dem zuvor erstellten privaten SSH-Schlüssel.

Da Sie den öffentlichen Schlüssel bereits bereitgestellt haben, gelangen Sie durch Klicken auf die Schaltfläche Weiter zur dritten und letzten Seite des Assistenten. Die letzte Seite sieht so aus.

Klicken Sie auf die Schaltfläche Fertig . Der Dialog für einen erfolgreichen Verbindungstest sieht so aus.

Ein vollständig ausgefülltes Formular für ein neues Touch21 -Gerät sieht etwa so aus.

Setup: Bausatz

Sie haben alle Teile definiert: CMake, Qt-Version und Gerät, um das Kit zu konfigurieren. Kehren Sie zum Dialogfeld Extras> Optionen> Kits> Kits (Extras> Optionen> Kits> Kits) * zurück und klicken Sie auf die Schaltfläche * Hinzufügen (Hinzufügen) . Füllen Sie das Formular wie im folgenden Screenshot gezeigt aus.

Klicken Sie unten auf die Schaltfläche Ändern für CMake-Konfiguration und ersetzen Sie den Inhalt des Dialogfelds durch die folgenden drei Zeilen.

CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
CMAKE_PREFIX_PATH:STRING=/public/Work/qt-5.14.1

Vergessen Sie nicht, das Arbeitsverzeichnis des Entwicklers /public/Work durch Ihres zu ersetzen. So sollte der Dialog aussehen, bevor Sie auf die Schaltfläche OK klicken.

Projektkonfiguration

Wenn Sie die Projektdatei /public/Work/qtcreator-with-docker/CMakeLists.txt zum ersten Mal öffnen, fordert QtCreator Sie auf, das Projekt einzurichten (siehe folgenden Screenshot). Wählen Sie das soeben erstellte Docker Qt 5.14.1-Kit aus und klicken Sie auf die Schaltfläche Projekt konfigurieren .

Wenn Sie zuvor ein Projekt mit einer anderen Konfiguration geöffnet haben, dann klicken Sie in der Liste unterhalb von Build & Run auf den Eintrag Docker Qt 5.14.1 und auf den Unterpunkt Build .

In beiden Fällen sehen Sie typische CMake-Meldungen im Ausgabebereich Allgemeine Meldungen , wenn Sie zum ersten Mal Makefiles erstellen. Sehen Sie sich die erste Zeile an: QtCreator ruft das Skript dr-cmake statt cmake auf. Der Docker-Container blockiert die Socket-Verbindung, die der Server mit der CMake-Option -E herzustellen versucht. Dies führt zu den Fehlermeldungen QLocalSocket::connectToServer: Invalid name . Der Aufruf von CMake funktioniert jedoch.

Running "/home/burkhard/bin/dr-cmake -E server --pipe=/tmp/cmake-.JRorEM/socket --experimental" 
    in /tmp/QtCreator-jZQYdh/qtc-cmake-cbJJnSrf.
QLocalSocket::connectToServer: Invalid name
...
Starting to parse CMake project, using: 
    "-DCMAKE_BUILD_TYPE:STRING=Debug", 
    "-DCMAKE_CXX_COMPILER:STRING=/usr/bin/g++", 
    "-DCMAKE_C_COMPILER:STRING=/usr/bin/gcc", 
    "-DCMAKE_PREFIX_PATH:STRING=/public/Work/qt-5.14.1".
The C compiler identification is GNU 7.4.0
The CXX compiler identification is GNU 7.4.0
...
Check for working CXX compiler: /usr/bin/g++
Check for working CXX compiler: /usr/bin/g++ -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Configuring done
Generating done
CMake Project was parsed successfully.

Öffnen Sie die Build-Einstellungen Projects > Build & Run > Docker Qt 5.14.1 > Build und klicken Sie auf die Schaltfläche Add Build Step > Build . Überprüfen Sie die Installation im Feld Ziele und entfernen Sie alle anderen Ziele. Der folgende Screenshot zeigt die endgültigen Build-Einstellungen. Beachten Sie, dass dr-cmake anstelle von cmake in den Erstellungs- und Bereinigungsschritten verwendet wird.

Wechseln Sie zu den Starteinstellungen Projekte > Build & Run > Docker Qt 5.14.1 > Run . Löschen Sie die Install -Partition im temporären Hostverzeichnis , indem Sie den Mauszeiger über die Schaltfläche Details bewegen und auf das Kreuz links neben der Schaltfläche Details klicken. Der Rest des Bereitstellungsabschnitts ist in Ordnung.

Sobald Sie das Projekt mindestens einmal erstellt haben, sehen Sie alle Files to deploy in einem gleichnamigen Fenster. Die Dateiliste teilt QtCreator mit, in welche entfernten Verzeichnisse es beim Deployment lokale Dateien kopieren soll. Hier ein Beispieleintrag:

/public/Work/qt-5.14.1/lib/libQt5Multimedia.so.5.14.1
    -> /home/benutzer/MyComp/qt/lib/

QtCreator liest die Zuordnung von lokalen Dateien zu entfernten Verzeichnissen aus der Datei QtCreatorDeployment.txt . Die Makros add_deployment_file und add_deployment_directory schreiben Map-Einträge in QtCreatorDeployment.txt .

Die Anzeige enthält zwei Einträge für die ausführbare Datei der Anwendung.

/public/Work/build-qtcreator-with-docker-Docker_Qt_5_14_1-Debug/final/bin/SimpleApp
    -> /home/benutzer/MyComp/bin
/public/Work/build-qtcreator-with-docker-Docker_Qt_5_14_1-Debug/SimpleApp
    -> /home/benutzer/MyComp/.

Der zweite Eintrag stammt von einem Aufruf von install(TARGETS). Die ausführbare Datei ist das Ergebnis eines CMake-Build-Schritts. Es enthält eine Folge von Doppelpunkten anstelle von rpath. Es funktioniert nicht auf dem Zielsystem, weil es die Qt-Bibliotheken nicht findet. Der CMake-Setup-Schritt ersetzt die Doppelpunktsequenz durch relative rpaths. Das Ergebnis des Installationsschritts ist die erste ausführbare Eintragsdatei, die sich aus dem Aufruf von add_deployment_file ergibt. Die ausführbare Datei des ersten Eintrags ist diejenige, die QtCreator auf dem Zielsystem ausführen wird.

Wenn Sie QtCreator 4.11.0 oder höher und CMake 3.14 oder höher verwenden, benötigen Sie die Problemumgehung QtCreatorDeployment.txt nicht mehr. QtCreator und CMake arbeiten zusammen, um eine Zuordnung aus Setup-Befehlen zu erstellen. Ubuntu 18.04 wird jedoch mit CMake 3.10 ausgeliefert, sodass Sie immer noch eine Problemumgehung benötigen.

Der Abschnitt Run in Run configuration muss auf SimpleApp (on Touch21) eingestellt sein. Geben Sie im Feld unter Konfiguration ausführen die folgenden Werte ein.

• Aktivieren Sie in der Zeile Alternative ausführbare Datei auf dem Gerät die Option Stattdessen diesen Befehl verwenden und geben Sie den vollständigen Pfad zur ausführbaren Datei auf dem Zielgerät ein (für Entwickler: /home/benutzer/MyComp /bin/SimpleApp) .
• Geben Sie in der Zeile Befehlszeilenargumente die von der Anwendung (Entwickler: -platform xcb -plugin evdevtouch) geforderten Argumente ein.

Fügen Sie im Abschnitt Run Environment die DISPLAY-Variable mit dem Wert 0 hinzu.

Anwendung auf dem Zielsystem starten

Jetzt kommt der magische Moment. Sie drücken in QtCreator Strg+R (Ausführen) . QtCreator erstellt eine Anwendung, stellt die Anwendung und die Qt-Bibliotheken auf dem Zielgerät bereit und führt sie auf dem Zielgerät aus. All dies in einem Schritt.
Sie sehen die QtCreator-Docker-CMake-Aufrufe und die Bereitstellungsaufrufe im Compile Output pane . Hier ist eine gekürzte Version (ohne Compiler- und Fortschrittsmeldungen).

11:19:37: Running steps for project SimpleApp...
11:19:37: Persisting CMake state...
11:19:37: Starting: "/home/burkhard/bin/dr-cmake" --build . --target all
...
11:19:39: The process "/home/burkhard/bin/dr-cmake" exited normally.
11:19:39: Starting: "/home/burkhard/bin/dr-cmake" --build . --target install
...
11:19:43: The process "/home/burkhard/bin/dr-cmake" exited normally.
11:19:43: Connecting to device "Touch21" (192.168.1.82).
11:19:44: The remote file system has 985 megabytes of free space, going ahead.
11:19:44: Deploy step finished.
11:19:44: Trying to kill "/home/benutzer/MyComp/bin/SimpleApp" on remote device...
11:19:45: Remote application killed.
11:19:45: Deploy step finished.
11:19:45: sending incremental file list

11:19:45: SimpleApp
...
total size is 751,048  speedup is 1.00

11:22:24: Deploy step finished.
11:22:24: Elapsed time: 02:47.

Das erste Deployment dauert ein paar Minuten (der Entwickler hat 2:47 Minuten gebraucht), weil QtCreator Teile der Qt-Laufzeit vom PC des Entwicklers auf das Zielsystem kopiert. Solange sich Qt nicht ändert, können Sie die Bereitstellung von Qt überspringen. Gehen Sie zu den Build-Einstellungen Projects > Build & Run > Docker Qt 5.14.1 > Build , setzen Sie die Variable DEPLOY_QT im Abschnitt CMake auf OFF und klicken Sie auf die Schaltfläche Apply Configuration Changes .
Ihr Arbeitsablauf ist jetzt derselbe, als ob Sie die Anwendung auf Ihrem Entwicklungs-PC ausführen würden. Sie ändern Ihren Code und erstellen, implementieren und führen die Anwendung aus, indem Sie in Qt Creator Strg+R drücken, und dann können Sie Ihre Änderungen auf dem Zielsystem ausprobieren. Sie erhalten unmittelbares Feedback darüber, wie sich Ihre Änderungen auf dem Zielsystem verhalten.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 14:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 18:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr9. Februar 2024 02:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 18:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 10:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 22:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 16:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 11:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken