Udostępniono wydanie 3.21 CMake — wieloplatformowego, otwartego generatora skryptów budowania, stanowiącego alternatywę dla Autotools i wykorzystywanego w takich projektach jak KDE, LLVM/Clang, MySQL, MariaDB, ReactOS i Blender. Kod CMake jest napisany w języku C++ i rozpowszechniany 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).
- Dodano pełną obsługę języka programowania HIP (Heterogeneous-Computing Interface for Portability) — dialektu C++, którego celem jest uproszczenie przekształcania aplikacji CUDA w przenośny kod C++.
- Dodano generator skryptów budowania dla Visual Studio 17 2022, oparty na wstępnym wydaniu Visual Studio 2022 Preview 1.1.
- W generatorach skryptów budowania Makefile i Ninja dodano właściwości C_LINKER_LAUNCHER oraz CXX_LINKER_LAUNCHER, które umożliwiają uruchamianie narzędzi pomocniczych wywołujących linker, takich jak analizatory statyczne. Generator uruchomi wskazane narzędzia, przekazując im nazwę linkera i jego argumenty.
- Do właściwości „C_STANDARD” i „OBJC_STANDARD”, a także do narzędzi konfiguracji parametrów kompilatora (Compile Features), dodano obsługę specyfikacji C17 i C23.
- Do narzędzia cmake dodano opcję „—toolchain ” służącą do określenia ścieżki do toolchaina.
- Zapewniono wyróżnianie typów komunikatów wyświetlanych w terminalu.
- Dodano obsługę kompilatora Fujitsu.
- W poleceniu „foreach()” zapewniono izolację zmiennych pętli wewnątrz samej pętli.
Warto także odnotować wydanie systemu budowania Meson 0.59, który jest wykorzystywany do kompilacji takich projektów jak X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME i GTK. Kod Meson jest napisany w języku Python i dostarczany na licencji Apache 2.0. Obsługiwana jest kompilacja krzyżowa oraz budowanie w systemach Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS i Windows z użyciem GCC, Clang, Visual Studio oraz innych kompilatorów. Możliwe jest budowanie projektów w różnych językach programowania, w tym C, C++, Fortran, Java i Rust. Zamiast narzędzia make domyślnie wykorzystywany jest zestaw Ninja, ale można również używać innych backendów, takich jak xcode i VisualStudio.
System ma wbudowany wieloplatformowy mechanizm obsługi zależności, który pozwala używać Meson do budowania pakietów dla dystrybucji. Reguły kompilacji definiuje się w uproszczonym języku dziedzinowym; są one czytelne i zrozumiałe dla użytkownika (zgodnie z założeniem twórców programista powinien poświęcać minimum czasu na ich tworzenie). Obsługiwany jest przyrostowy tryb budowania, w którym przebudowywane są tylko komponenty bezpośrednio powiązane ze zmianami wprowadzonymi od czasu poprzedniej kompilacji. Meson można także wykorzystać do tworzenia powtarzalnych buildów, w których uruchomienie kompilacji w różnych środowiskach prowadzi do wygenerowania całkowicie identycznych plików wykonywalnych.
Najważniejsze nowości w Meson 0.59:
- Dodano obsługę języka Cython (rozszerzonej wersji Python, ukierunkowanej na uproszczenie integracji z kodem w języku C).
- Dodano słowa kluczowe «unescaped_variables» i «unescaped_uninstalled_variables» do definiowania zmiennych w pkgconfig bez maskowania spacji znakiem «\».
- Dodano obsługę wrc (Wine Resource Compiler).
- Wprowadzono możliwość generowania projektów dla Visual Studio 2012 i Visual Studio 2013.
- Wszystkie polecenia związane z obsługą subprojektów domyślnie uruchamiają teraz każdy subprojekt równolegle. Liczbę równolegle działających procesów określa parametr «—num-processes».
Źródło: opennet.ru
