Została wydana wersja wieloplatformowego otwartego generatora skryptów budowy CMake 3.22, który jest alternatywą dla Autotools i jest używany w takich projektach jak KDE, LLVM/Clang, MySQL, MariaDB, ReactOS i Blender. Kod CMake jest napisany w języku C++ i jest udostępniany na licencji BSD.
CMake wyróżnia się tym, że oferuje prosty język skryptowy, możliwości rozszerzenia funkcjonalności poprzez moduły, minimalną liczbę zależności (brak powiązań z M4, Perlem czy Pythonem), wsparcie dla pamięci podręcznej, dostępność narzędzi do kompilacji krzyżowej, generację plików kompilacji dla szerokiej gamy systemów kompilacji i kompilatorów, oraz narzędzi ctest i cpack do definiowania skryptów testowych i pakietów, a także narzędzię cmake-gui do interaktywnej konfiguracji parametrów kompilacji.
Zaimplementowano wywołania systemowe waitid (oczekiwanie na zmianę stanu procesu), pinsyscall (do przekazywania informacji o punkcie wejścia execve w celu ochrony przed exploitami ROP), getthrname i setthrname (uzyskiwanie i ustalanie nazwy wątku).
- W narzędziach do konfigurowania parametrów kompilatora (Compile Features) dodano możliwość włączania i wyłączania rozszerzeń kompilatora bez określania poziomu wsparcia standardu, a także wykluczono ustawienie zbędnych flag dotyczących poziomu standardu języka, jeśli wybrane ustawienia są zgodne z ustawieniami domyślnymi kompilatora.
- W poleceniu cmake_host_system_information() dodano możliwość zapytania o identyfikator systemu operacyjnego, przechowywany w pliku /etc/os-release.
- Dodano zmienne środowiskowe CMAKE_BUILD_TYPE i CMAKE_CONFIGURATION_TYPES, za pomocą których można ustawić wartość domyślną tych zmiennych CMake.
- Dodano zmienną "CMAKE_REQUIRE_FIND_PACKAGE_", która przekształca wywołanie funkcji find_package() w celu wykrycia określonego pakietu w obowiązkowe.
- Dodano zmienną środowiskową "CMAKE_INSTALL_MODE" do ustawienia symbolicznych linków zamiast kopiowania plików przy wywołaniu "install()".
- Dodano flagę "CMAKE__LINK_WHAT_YOU_USE_FLAG" oraz zmienną "CMAKE_LINK_WHAT_YOU_USE_CHECK" do ustawiania i sprawdzania flag linkerów.
- W module FetchContent zapewniono przekazywanie ustawionych zmiennych "CMAKE_TLS_VERIFY", "CMAKE_TLS_CAINFO", "CMAKE_NETRC" i "CMAKE_NETRC_FILE" do skryptu budowy zewnętrznych projektów (wcześniej te parametry były ignorowane).
- W dostarczanym przez moduł "CMakeDependentOption" makrosie "cmake_dependent_option()" dodano pełne wsparcie dla składni wyrażeń warunkowych.
- Moduły "FindJasper" i "FindMatlab" teraz dostarczają cele importowane.
- W właściwości "VS_SETTINGS" zaimplementowano wsparcie dla wszystkich typów plików ze źródłami.
- Został oznaczony jako przestarzały i zostanie usunięty w jednej z nadchodzących wersji generator "Visual Studio 10 2010".
Źródło: opennet.ru
