Opublikowano wydanie wieloplatformowego, otwartego generatora skryptów budowania CMake 3.28, który stanowi alternatywę dla Autotools i jest używany w takich projektach jak KDE, LLVM/Clang, MySQL, MariaDB, ReactOS i Blender. CMake znany jest z dostarczania prostego języka skryptowego, wsparcia dla rozszerzalności przez moduły, obsługi cache'a, dostępności narzędzi do cross-kompilacji, generowania plików budowy dla szerokiego wachlarza systemów budowania i kompilatorów, oraz narzędzi ctest i cpack do definiowania skryptów testujących i budujących pakiety, a także narzędzia cmake-gui do interaktywnej konfiguracji parametrów budowy. Kod CMake napisany jest w języku C++ i jest rozpowszechniany na licencji BSD.
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 wsparcie dla modułów zdefiniowanych w specyfikacji C++ 20 do generatorów skryptów budowania dla Visual Studio i Ninja. Wsparcie dla modułów jest dostępne przy użyciu LLVM/Clang 16, GCC 14-dev lub MSVC 14.34.
- Wdrożono możliwości kompilacji kodu w języku HIP dla GPU NVIDIA, korzystając z kompilatora NVCC (NVIDIA CUDA Compiler). Dodano zmienną CMAKE_HIP_PLATFORM do wyboru platformy GPU dla HIP („amd” lub „nvidia”).
- Na platformach Apple zapewniono wsparcie dla katalogów „.xcframework”.
- Usunięto polecenie „exec_program()”, które zostało oznaczone jako przestarzałe w wersji 3.0. Do uruchamiania procesów należy używać polecenia „execute_process()”.
- Pliki wygenerowane z użyciem trybu „FILE_SET” są teraz domyślnie traktowane jako prywatne, co umożliwia tworzenie bardziej efektywnego grafu budowy w generatorach Ninja.
- W poleceniach find_library(), find_path() i find_file() na platformie Windows wyłączono wyszukiwanie w katalogach instalacyjnych uzyskanych z zmiennej środowiskowej PATH (w celu ujednolicenia zachowania w Windows z innymi platformami).
Źródło: opennet.ru
