Release des Build-Systems CMake 3.16

Vorstellung Plattformübergreifende Veröffentlichung des offenen Build-Skript-Generators CMake 3.16, 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- Verbesserungen:

  • Unterstützung für die Programmiersprachen Objective C („OBJC“) und Objective
    C++ („OBJCXX“) hinzugefügt, die über die Befehle project() und enable_language() aktiviert werden können. Danach wird der Code in den Dateien „.m“ und „.mm“ als Objective C- und Objective C++-Code kompiliert und nicht mehr als C++-Code, wie zuvor;
  • Unterstützung für den Clang-Compiler auf der Solaris-Plattform hinzugefügt;
  • Neue Befehlszeilenparameter hinzugefügt: „cmake -E true|false“ für die Ausgabe der Rückgabewerte 0 und 1; „cmake —trace-redirect=“ zum Umleiten von Trace-Informationen in eine Datei anstelle von
    „stderr“; der Befehl „cmake —loglevel“ wurde in „—log-level“ umbenannt, um die Namensgebung der anderen Befehle in Einklang zu bringen;
  • Der Befehl „target_precompile_headers()“ wurde hinzugefügt, um eine Liste von Header-Dateien anzugeben, die bei der Vorcompilierung verwendet werden (verkürzt die Build-Zeit);
  • Die Eigenschaft „UNITY_BUILD“ wurde hinzugefügt, die den Batch-Modus für die Verarbeitung von Quellcode in den Generatoren aktiviert, um den Build zu beschleunigen;
  • Die Befehle „find_file()“, „find_library()“, „find_path()“,
    „find_package()“ und „find_program()“ wurden hinzugefügt, um nach Dateien, Bibliotheken, Pfaden, Paketen und ausführbaren Dateien gemäß den Variablen zu suchen, die die Suchpfade für verschiedene Dateikategorien definieren.
    Zur Verwaltung grundlegender Suchpfade werden die Variablen „CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH“, „CMAKE_FIND_USE_CMAKE_PATH“, „CMAKE_FIND_USE_CMAKE_SYSTEM_PATH“, „CMAKE_FIND_USE_PACKAGE_ROOT_PATH“, „CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH“ und „CMAKE_FIND_USE_PACKAGE_REGISTRY“ verwendet;
  • Im Befehl „file()“ wurde der Modus „file(GET_RUNTIME_DEPENDENCIES)“ hinzugefügt, um rekursiv eine Liste von Bibliotheken abzurufen, die beim dynamischen Binden von ausführbaren Dateien oder Bibliotheken verwendet werden. Dieser Modus ersetzt den Befehl GetPrerequisites(), der nun als veraltet markiert ist;
  • Im Befehl „ctest(1)“ wurde die Möglichkeit zur Serialisierung von Tests, basierend auf den Ressourcen, die für jeden Test benötigt werden, implementiert;
  • Die Variable „CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY“ wurde als veraltet erklärt, stattdessen sollte „CMAKE_FIND_USE_PACKAGE_REGISTRY“ verwendet werden;
  • Die Unterstützung für die AIX-Plattform wurde verbessert. Bei der Verwendung der Eigenschaft „ENABLE_EXPORTS“ wird nun neben der ausführbaren Datei auch eine Importdatei für den Linker erstellt, die mit der Endung „.imp“ gespeichert wird. In Plugins, die mithilfe des Aufrufs „add_library()“ mit der Option „MODULE“ erstellt werden, kann diese Datei beim Linken mit dem Befehl „target_link_libraries()“ verwendet werden. Das Runtime-Linken in AIX ist standardmäßig deaktiviert, da CMake nun alle erforderlichen Informationen über Symbole für das Binden zur Laufzeit bereitstellt. Für das Runtime-Linken von dynamischen Bibliotheken oder geladenen Modulen müssen die Optionen „-Wl,-G“ explizit in die Flaggenliste des Linkers aufgenommen werden, die über die Variablen „CMAKE_SHARED_LINKER_FLAGS“ und „CMAKE_MODULE_LINKER_FLAGS“ definiert sind.

Quelle: opennet.ru

60GB SSD 8Gb DDR4