Release des plattformübergreifenden, 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 CMake-Code ist in C++ geschrieben und steht unter der BSD-Lizenz.
CMake zeichnet sich durch die Bereitstellung einer einfachen Skriptsprache, die Möglichkeit zur Erweiterung durch Module, einer minimalen Anzahl an Abhängigkeiten (keine Bindung an M4, Perl oder Python), Unterstützung für Caching, Tools zum Cross-Compiling, die Generierung von Build-Dateien für eine Vielzahl von Build-Systemen und Compilern sowie die Verfügbarkeit von Tools wie ctest und cpack zur Definition von Testskripten und Paket-Builds aus, einschließlich des Tools cmake-gui für die interaktive Anpassung von Build-Parametern.
Haupt :
- 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++ 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» zum Ausgeben der Rückgabewerte 0 und 1; «cmake —trace-redirect=» zur Umleitung von Trace-Informationen in eine Datei anstelle von «stderr»; der Befehl «cmake —loglevel» wurde in «—log-level» umbenannt, um der Benennung der anderen Befehle zu entsprechen.
- Neuer Befehl «target_precompile_headers()» hinzugefügt, um eine Liste von Header-Dateien aufzulisten, die bei der Vor-Kompilierung verwendet werden (verkürzt die Build-Zeit).
Eigenschaft «UNITY_BUILD» hinzugefügt, die den Batch-Modus für die Verarbeitung der Quellcodes in den Generatoren aktiviert, um den Build zu beschleunigen. - Die Befehle «find_file()», «find_library()», «find_path()» wurden hinzugefügt.
- Die Eigenschaft „UNITY_BUILD“ wurde hinzugefügt, um den Batch-Verarbeitungsmodus in den Generatoren zu aktivieren, was die Kompilierung beschleunigt;
- Die Befehle „find_file()“, „find_library()“, „find_path()“ wurden hinzugefügt,
Die Befehle «find_package()» und «find_program()» werden verwendet, um Dateien, Bibliotheken, Pfade, Pakete und ausführbare Dateien entsprechend den Variablen zu suchen, die die Suchpfade verschiedener Dateikategorien definieren.
Für die Verwaltung der grundlegenden Suchpfade kommen 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» zum Einsatz. - Der Befehl «file()» wurde um den Modus «file(GET_RUNTIME_DEPENDENCIES)» erweitert, der es ermöglicht, rekursiv die Liste der Bibliotheken abzurufen, die beim dynamischen Linken einer ausführbaren Datei oder Bibliothek verwendet werden. Dieser Modus ersetzt den Befehl GetPrerequisites(), der nun als veraltet gilt.
- Im Befehl «ctest(1)» wurde die Möglichkeit zur Serialisierung von Tests umgesetzt, basierend auf den Ressourcen, die für jeden Test benötigt werden.
- 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 der AIX-Plattform wurde verbessert. Bei der Verwendung der Eigenschaft „ENABLE_EXPORTS“ wird nun zusätzlich zur ausführbaren Datei eine Importdatei für den Linker erstellt, die mit der Endung „.imp“ gespeichert wird. In Plugins, die mit dem Aufruf „add_library()“ mit der Option „MODULE“ erstellt werden, kann diese Datei beim Linken mit dem Befehl „target_link_libraries()“ verwendet werden. Die Runtime-Verlinkung in AIX ist standardmäßig deaktiviert, da CMake nun alle erforderlichen Informationen über die Symbole zum Binden zur Verfügung stellt, während des Ladevorgangs. Um die Runtime-Verlinkung von dynamischen Bibliotheken oder geladenen Modulen anzuwenden, sollten die Optionen „-Wl,-G“ ausdrücklich in die Listen der Startflags des Linkers aufgenommen werden, die durch die Variablen „CMAKE_SHARED_LINKER_FLAGS“ und „CMAKE_MODULE_LINKER_FLAGS“ definiert werden.
Quelle: opennet.ru
