mafulechka
mafulechka12. April 2020 04:58

Neue Funktionen in CMake 3.17

Am 20. März veröffentlichte Kitware CMake 3.17.
Im Folgenden sind einige Änderungen aufgeführt, die das Leben eines Qt-Entwicklers verbessern sollten, der CMake verwendet.


Ninja Multi-Config-Generator

Dieser Generator ähnelt dem Ninja-Generator, kann jedoch verwendet werden, um mehrere Konfigurationen gleichzeitig zu erstellen.

Diese Funktion ähnelt der debug_and_release-Funktion in qmake.

Die Referenzdokumentation für den Ninja Multi-Config-Generator enthält alle kleinen Details.

Die Verwendung von debug_and_release würde wie folgt aussehen:

cmake -G"Ninja Multi-Config" \
  -DCMAKE_CONFIGURATION_TYPES=Release;Debug \
  -DCMAKE_DEFAULT_CONFIGS=all \
  -DCMAKE_CROSS_CONFIGS=all \
  -S source_dir \
  -B build_dir
cmake --build build_dir

iOS Multi-Architektur für Ninja/Makefile-Generatoren

Jetzt können Sie sofort „fette“ Binärdateien (mit mehreren Architekturen) für iOS kompilieren.
Die Verwendung der Befehlszeile würde wie folgt aussehen:

cmake -GNinja \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_SYSTEM_NAME=iOS \
  -DCMAKE_OSX_ARCHITECTURES=arm64;x86_64
  -S source_dir \
  -B build_dir
cmake --build build_dir

AUTOGEN verwendet Abhängigkeitsdateien von generierten MOC-Dateien

Qt 5.15 bringt uns ein aktualisiertes Moc, das eine Abhängigkeitsdatei generieren kann, die wiederum von Ninja verwendet wird, um nur die notwendigen Bits (neu) zu erstellen.

Das bedeutet, dass für ein Projekt wie Qt Creator ein Null-Build schneller ist, da nicht mehr alle AUTOGEN-Targets erstellt werden müssen.

Mit Windows 10 testeten Entwickler CMake 3.17, Ninja 1.10, Qt 5.15.0 mit Qt Creator und null Builds (durchschnittlich 5 Durchläufe) von 4,6 Sekunden mit CMake 3.16 auf 2,4 Sekunden mit CMake 3.17!

Qt Creator hat noch einige benutzerdefinierte Ziele zu erreichen (Kopieren freigegebener Dateien, einschließlich Dateien usw.) und diese 2,4 Sekunden zu füllen.

Ninja startet CMake nach der Konfiguration nicht neu

Sie haben vielleicht bemerkt, dass Ninja nach dem Öffnen eines CMake-Projekts in Qt Creator und dem Klicken auf die Schaltfläche „Erstellen“ CMake für ein bereits konfiguriertes Projekt neu startet.

Je nach Größe des Projekts oder der Plattform kann das sehr lästig sein. Die CMake-Konfiguration von Qt Creator kann auf einem Windows 10-Entwicklungscomputer bis zu 30 Sekunden dauern.

Mit Ninja Version 1.10 und CMake Version 3.17 ist dieses lästige Verhalten verschwunden!

Das Qt SDK enthält Ninja und CMake, leider Version 1.9 von Ninja und Version 3.16 von CMake.

Header zwischenspeichern und vorkompilieren

Für Projekte, die eine Header-Datei verwenden, um die Kompilierung über vorkompilierte Header zu beschleunigen, und ccache zum Zwischenspeichern von Build-Artefakten verwenden, hat ccache jetzt eine Cache-Trefferrate von 100 %!

CMake kopiert den Header-Zeitstempel für seinen internen vorkompilierten Header-Mechanismus und ccache denkt nicht, dass das PCH-Artefakt zu neu ist.

Qt Creator verwendet den Header src/shared/qtcreator_gui_pch.h.

Für Cache muss include_file_mtime angegeben werden.

Im Moment funktioniert das nur mit GCC. CMake Clang Precompile Header-Konfiguration wird von Ccache nicht unterstützt.

Gesunde Zip- und 7zip-Archive generieren

CMake über cmake -E Befehlszeilentar kann tar.gz, tar.bz, tar.xz, tar.zstd, zip, 7z Archive extrahieren oder Archive erstellen.

Dies kann auf CI-Systemen nützlich sein, auf denen nicht auf allen Plattformen die erforderlichen Tools installiert sind, aber CMake installiert ist.

Zip- und 7zip-Archive enthalten das aktuelle Verzeichnis. im Archiv. Während dies für tar-Archive keine Probleme verursacht, kann ein Zip-Archiv unter Windows nicht mit dem Windows Explorer geöffnet werden, und ein 7zip-Archiv kann unter KDE Probleme (Abstürze) verursachen.

Рекомендуємо хостинг 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 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18: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 10: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 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15: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 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken