release van de cross-platform open source build-scripts generator , dat dient als alternatief voor Autotools en wordt gebruikt in projecten zoals KDE, LLVM/Clang, MySQL, MariaDB, ReactOS en Blender. De code van CMake is geschreven in C++ en wordt verspreid onder de BSD-licentie.
CMake valt op door het bieden van een eenvoudige script-taal, extensiemogelijkheden via modules, een minimaal aantal afhankelijkheden (geen binding aan M4, Perl of Python), ondersteuning voor cachen, tools voor cross-compilatie, ondersteuning voor het genereren van build-bestanden voor een breed scala aan build-systemen en compilers, en de aanwezigheid van de tools ctest en cpack voor het definiƫren van test- en pakket build-scripts, evenals de cmake-gui-tool voor interactieve configuratie van build-instellingen.
Belangrijkste :
- Een nieuwe generator voor build-scripts op basis van het Ninja-toolkit is toegevoegd - "Ninja Multi-Config", die verschilt van de oude generator door het vermogen om meerdere build-configuraties tegelijk te verwerken.
- In de build-script-generator voor Visual Studio is de mogelijkheid toegevoegd om bestanden met broncode te definiƫren die aan elke configuratie zijn gekoppeld (per-config sources).
- In de tools voor het instellen van compilerparameters (Compile Features) is de mogelijkheid toegevoegd om meta-parameters voor CUDA op te geven ("cuda_std_03", "cuda_std_14", etc.).
- De variabelen "CMAKE_CUDA_RUNTIME_LIBRARY" en "CUDA_RUNTIME_LIBRARY" zijn toegevoegd om het type runtime-bibliotheken te kiezen bij het gebruik van CUDA.
- De module "FindCUDAToolkit" is toegevoegd om beschikbare CUDA-tools in het systeem te detecteren zonder CUDA-taal in te schakelen.
- Er is een commando "ādebug-find" toegevoegd aan de cmake-tool voor het genereren van extra leesbare diagnostiek tijdens zoekoperaties. Voor soortgelijke doeleinden is de variabele CMAKE_FIND_DEBUG_MODE toegevoegd.
- De module "FindCURL" heeft ondersteuning gekregen voor het zoeken naar CURL-tools via gegenereerde cmake-configuratiebestanden "CURLConfig.cmake". Er is een variabele CURL_NO_CURL_CMAKE toegevoegd om dit gedrag uit te schakelen.
- De module FindPython heeft de mogelijkheid gekregen om Python-componenten te zoeken in virtuele omgevingen die worden beheerd met "conda".
- In de ctest-tool zijn opties "āno-tests=[error|ignore]" toegevoegd om het gedrag bij afwezigheid van tests te bepalen en "ārepeat" voor het instellen van de voorwaarden voor het opnieuw uitvoeren van tests (until-pass, after-timeout).
- Eigenschappen van de build-doelstellingen INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES en INTERFACE_LINK_DEPENDS zijn overgedragen in het aantal interne afhankelijkheden van statisch gelinkte bibliotheken.
- Bij gebruik van het MinGW-toolkit is de standaardinstelling voor het zoeken naar DLL-bestanden met de opdracht find_library uitgeschakeld (in plaats daarvan wordt standaard geprobeerd om " .dll.a" bibliotheken te importeren).
- De logica voor het kiezen van de ninja-tool in de Ninja-generator hangt nu niet af van de naam van het uitvoerbare bestand ā de eerste beschikbare tool ninja-build, ninja of samu wordt gebruikt, gevonden in de paden die zijn gedefinieerd via de omgevingsvariabele PATH.
- Een commando "-E rm" is toegevoegd aan de cmake-tool, dat kan worden gebruikt om bestanden en mappen te verwijderen in plaats van aparte commando's "-E remove" en "-E remove_directory".
Bron: opennet.ru
