Plattformübergreifende Veröffentlichung des offenen Build-Skript-Generators , das als Alternative zu Autotools dient und in Projekten wie KDE, LLVM/Clang, MySQL, MariaDB, ReactOS und Blender verwendet wird. Der Code von CMake ist in C++ geschrieben und wird unter der BSD-Lizenz veröffentlicht.
CMake zeichnet sich durch eine einfache Skriptsprache, Erweiterungsmöglichkeiten durch Module, eine minimale Abhängigkeit (keine Bindung an M4, Perl oder Python), Unterstützung für Caching, Werkzeuge für Cross-Compiling, die Generierung von Build-Dateien für eine breite Palette von Build-Systemen und Compilern, sowie die Tools ctest und cpack zur Definition von Test- und Paketbuild-Skripts aus, sowie durch das cmake-gui-Tool für die interaktive Konfiguration von Build-Parametern.
Haupt- :
- Ein neuer Generator für Build-Skripte basierend auf Ninja - "Ninja Multi-Config" - wurde hinzugefügt, der sich vom alten Generator dadurch unterscheidet, dass er mehrere Build-Konfigurationen gleichzeitig verarbeiten kann.
- Im Build-Skripter-Generator für Visual Studio wurde die Möglichkeit hinzugefügt, Quelldateien zu definieren, die mit jeder Konfiguration verknüpft sind (per-config sources).
- In die Funktionen zur Compiler-Konfiguration (Compile Features) wurde die Möglichkeit eingeführt, Meta-Parameter für CUDA anzugeben ("cuda_std_03", "cuda_std_14" usw.).
- Die Variablen "CMAKE_CUDA_RUNTIME_LIBRARY" und "CUDA_RUNTIME_LIBRARY" wurden hinzugefügt, um den Typ der Runtime-Bibliotheken bei der Verwendung von CUDA auszuwählen.
- Das Modul "FindCUDAToolkit" wurde hinzugefügt, um das in der Systemumgebung verfügbare CUDA-Toolkit ohne die Aktivierung der CUDA-Sprache zu ermitteln.
- Der cmake-Befehl hat die Option "—debug-find" erhalten, um zusätzliche lesbare Diagnosen während der Suchoperationen auszugeben. Für ähnliche Zwecke wurde die Variable CMAKE_FIND_DEBUG_MODE hinzugefügt.
- Im Modul "FindCURL" wurde die Unterstützung für die Suche nach dem CURL-Toolkit durch generierte CMake-Konfigurationsdateien "CURLConfig.cmake" hinzugefügt. Um dieses Verhalten zu deaktivieren, gibt es die Variable CURL_NO_CURL_CMAKE.
- Im Modul FindPython wurde die Möglichkeit hinzugefügt, Python-Komponenten in von "conda" verwalteten virtuellen Umgebungen zu suchen.
- In die ctest-Utility wurden die Optionen "—no-tests=[error|ignore]" zur Bestimmung des Verhaltens im Falle fehlender Tests sowie "—repeat" zur Festlegung der Bedingungen für das Wiederholen von Tests (until-pass, after-timeout) hinzugefügt.
- Es wurde sichergestellt, dass die Eigenschaften der Build-Ziele INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES und INTERFACE_LINK_DEPENDS in die internen Abhängigkeiten statisch gebaute Bibliotheken übertragen werden.
- Beim Einsatz des MinGW-Tools ist die Suche nach DLL-Dateien mit dem find_library-Befehl standardmäßig deaktiviert (stattdessen wird standardmäßig versucht, "*.dll.a"-Bibliotheken zu importieren).
- Die Logik zur Auswahl des Ninja-Tools im Ninja-Generator hängt jetzt nicht mehr vom Namen der ausführbaren Datei ab - es wird das zuerst gefundene Werkzeug ninja-build, ninja oder samu verwendet, das in den über die Umgebungsvariable PATH festgelegten Pfaden gefunden wird.
- In die cmake-Utility wurde der Befehl "-E rm" eingefügt, der zum Löschen von Dateien und Verzeichnissen anstelle der separaten Befehle "-E remove" und "-E remove_directory" verwendet werden kann.
Quelle: opennet.ru
