Veröffentlichung des CMake 3.16 Build-Systems

Eingereicht von Veröffentlichung eines plattformübergreifenden Open-Build-Skriptgenerators CMake 3.16, das als Alternative zu Autotools fungiert und in Projekten wie KDE, LLVM/Clang, MySQL, MariaDB, ReactOS und Blender verwendet wird. Der CMake-Code ist in C++ geschrieben und wird unter der BSD-Lizenz vertrieben.

CMake zeichnet sich durch die Bereitstellung einer einfachen Skriptsprache, einer Möglichkeit zur Erweiterung der Funktionalität durch Module, einer minimalen Anzahl von Abhängigkeiten (keine Bindung an M4, Perl oder Python), Caching-Unterstützung, dem Vorhandensein von Tools für die Kreuzkompilierung und Unterstützung für die Generierung von Builds aus Dateien für eine Vielzahl von Build-Systemen und Compilern, das Vorhandensein der Dienstprogramme ctest und cpack zum Definieren von Testskripten und Erstellen von Paketen sowie das Dienstprogramm cmake-gui zum interaktiven Festlegen von Build-Parametern.

Haupt- Verbesserungen:

  • Unterstützung für Objective C („OBJC“) und Objective-Sprachen hinzugefügt
    C++ („OBJCXX“), das über die Befehle project() und enable_lingual() aktiviert werden kann, wonach der Code in den „.m“- und „.mm“-Dateien als Objective C- und Objective C++-Code und nicht als kompiliert wird C++, wie es vorher war;

  • Unterstützung für den Clang-Compiler auf der Solaris-Plattform hinzugefügt;
  • Neue Befehlszeilenoptionen hinzugefügt: „cmake -E true|false“ zum Drucken der Rückgabecodes 0 und 1; „cmake --trace-redirect=", um stattdessen Trace-Informationen in eine Datei umzuleiten
    „stderr“; Der Befehl „cmake --loglevel“ wurde in „--log-level“ umbenannt, um ihn an die Namen der anderen Befehle anzupassen;

  • Der Befehl „target_precompile_headers()“ wurde hinzugefügt, um die Liste der Header-Dateien aufzulisten, die während der Vorkompilierung verwendet werden (reduziert die Erstellungszeit);
  • Die Eigenschaft „UNITY_BUILD“ wurde hinzugefügt, die den Batch-Modus für die Verarbeitung von Quelldateien in Generatoren aktiviert, um den Build zu beschleunigen;
  • Hinzugefügte Befehle „find_file()“, „find_library()“, „find_path()“,
    „find_package()“ und „find_program()“ zum Suchen nach Dateien, Bibliotheken, Pfaden, Paketen und ausführbaren Dateien anhand von Variablen, die Suchpfade für verschiedene Dateikategorien definieren.
    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_REGIST“ werden zur Steuerung der Basissuchpfade RY verwendet;

  • Dem Befehl „file()“ wurde der Modus „file(GET_RUNTIME_DEPENDENCIES)“ hinzugefügt, mit dem Sie die Liste der verwendeten Bibliotheken rekursiv abrufen können, wenn Sie eine ausführbare Datei oder Bibliothek dynamisch verknüpfen. Der Modus ersetzte den Befehl GetPrerequisites(), der mittlerweile veraltet ist;
  • Der Befehl „ctest(1)“ implementiert die Möglichkeit, Tests basierend auf den für jeden Test erforderlichen Ressourcen zu serialisieren;
  • Die Variable „CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY“ ist veraltet und sollte durch „CMAKE_FIND_USE_PACKAGE_REGISTRY“ ersetzt werden;
  • Verbesserte Unterstützung der AIX-Plattform. Bei Verwendung der Eigenschaft „ENABLE_EXPORTS“ wird nun zusätzlich zur ausführbaren Datei eine Importdatei für den Linker generiert, gespeichert mit der Erweiterung „.imp“. In Plugins, die durch den Aufruf von „add_library()“ mit der Option „MODULE“ erstellt wurden, kann diese Datei beim Verknüpfen mit dem Befehl „target_link_libraries()“ verwendet werden. Die Laufzeitverknüpfung unter AIX ist standardmäßig deaktiviert, da CMake jetzt alle erforderlichen Symbolinformationen für die Verknüpfung zum Ladezeitpunkt bereitstellt. Um die Laufzeitverknüpfung dynamischer Bibliotheken oder ladbarer Module zu verwenden, müssen Sie die Optionen „-Wl, -G“ explizit in den Listen der Linker-Startflags angeben, die durch die Variablen „CMAKE_SHARED_LINKER_FLAGS“ und „CMAKE_MODULE_LINKER_FLAGS“ definiert werden.

Source: opennet.ru

Kommentar hinzufügen