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 :
- Eine erste Unterstützung für die Sprache , die von Apple entwickelt wird, wurde in den Ninja-basierten Build-Skript-Generator hinzugefügt;
- Es wurde Unterstützung für eine Clang-Compiler-Variante unter Windows hinzugefügt, die mit ABI MSVC kompiliert, jedoch GNU-ähnliche Optionen für die Befehlszeile verwendet;
- Die Variablen CMAKE_MSVC_RUNTIME_LIBRARY und MSVC_RUNTIME_LIBRARY wurden hinzugefügt, um die zur Verfügung stehenden Laufzeitbibliotheken für Compiler auf Basis von ABI MSVC (MS Visual Studio) auszuwählen;
- Für Compiler wie MSVC wurden die Flags zur Steuerung der Warnungsausgabe in CMAKE__FLAGS standardmäßig entfernt, wie z.B. «/W3»;
- Ein Generatorausdruck «COMPILE_LANG_AND_ID:» wurde hinzugefügt, um Compileroptionen für Zieldateien zu definieren, die die Variablen CMAKE__COMPILER_ID und LANGUAGE für jede Code-Datei anwenden;
- In den Generatorausdrücken C_COMPILER_ID, CXX_COMPILER_ID,
CUDA_COMPILER_ID, Fortran_COMPILER_ID, COMPILE_LANGUAGE,
Die Unterstützung für die Zuordnung eines Wertes zu einer Liste wurde zu COMPILE_LANG_AND_ID und PLATFORM_ID hinzugefügt, wobei die Elemente durch ein Komma getrennt sind. - Die Variable CMAKE_FIND_PACKAGE_PREFER_CONFIG wurde eingeführt, die bewirkt, dass der Aufruf von find_package() zuerst nach der Konfigurationsdatei des Pakets sucht, selbst wenn ein Suchmodul verfügbar ist.
- Für Interface-Bibliotheken wurde die Unterstützung für die Festlegung der Eigenschaften PUBLIC_HEADER und PRIVATE_HEADER hinzugefügt, wobei die betreffenden Header durch die install(TARGETS)-Anweisung mit den Argumenten PUBLIC_HEADER und PRIVATE_HEADER festgelegt werden können.
- Die Variable CMAKE_VS_JUST_MY_CODE_DEBUGGING und die Zieleigenschaft VS_JUST_MY_CODE_DEBUGGING wurden hinzugefügt, um den „Just My Code“-Modus im Visual Studio-Debugger bei der Kompilierung mit MSVC cl 19.05 und neueren Versionen zu aktivieren.
- Das FindBoost-Modul wurde überarbeitet und funktioniert jetzt vollständiger in den Modi Config und Module, wenn andere Suchmodule vorhanden sind.
- Die message()-Anweisung unterstützt jetzt die Typen NOTICE, VERBOSE,
DEBUG und TRACE. - Die Anweisung „export(PACKAGE)“ führt jetzt nichts aus, bis sie explizit über die Variable CMAKE_EXPORT_PACKAGE_REGISTRY aktiviert wird.
Quelle: opennet.ru
