
Logo CMake
Ogłoszono wydanie nowej wersji CMake 3.28, która zawiera ulepszenia obsługi, a także możliwość kompilacji języka HIP dla procesorów graficznych NVIDIA, poprawki błędów i nie tylko.
Dla tych, którzy nie wiedzą CMake, powinni to wiedzieć to wieloplatformowe narzędzie do generowania lub automatyzacji kodu który działa jako alternatywa dla Autotools i jest używany w projektach takich jak KDE, LLVM / Clang, MySQL, MariaDB, ReactOS i Blender.
CMake wyróżnia się prostym językiem skryptowym, oznacza rozszerzenie funkcjonalności na moduły, minimalną liczbę zależności (brak powiązania z M4, Perlem lub Pythonem), obsługę buforowania, obecność narzędzi do kompilacji krzyżowej, obsługa generowania plików kompilacji dla szerokiej gamy systemów kompilacji i kompilatorów, obecność narzędzi ctest i cpack do definiowania skryptów testowych i kompilacyjnych, narzędzie cmake-gui do interaktywnej konfiguracji parametrów kompilacji.
Co nowego w CMake 3.28
W tej nowej wersji CMake 3.28, obsługa modułów zdefiniowanych w specyfikacji C++20 do budowania generatorów skryptów dla Visual Studio i Ninja w połączeniu z zestawem narzędzi MSVC 14.34 (dostarczanym z VS 17.4) i nowszymi, LLVM/Clang 16.0 i nowszymi oraz GCC 14 (po 2023) i nowszymi.
Kolejną atrakcją nowej wersji CMake 3.28 jest obsługa kompilacji kodu GPU NVIDIA w języku HIP przy użyciu kompilatora NVCC, ponieważ dodano zmienną CMAKE_HIP_PLATFORM w celu wybrania platformy GPU dla HIP („amd” lub „nvidia”).
Oprócz tego Katalogi „xcframework” są teraz obsługiwane na platformach Apple. dzięki temu polecenie find_library wyszukuje teraz foldery .xcframework, a target_link_libraries obsługuje teraz łącza do folderu .xcframework.
W CMake 3.28 Polecenia find_library(), find_path() i find_file() w systemie Windows wyłączają wyszukiwanie katalogów instrukcje instalacji uzyskane ze zmiennej środowiskowej PATH (aby ujednolicić zachowanie w systemie Windows z innymi platformami). To zachowanie zostało dodane w CMake 3.3 w celu obsługi środowisk programistycznych MSYS i MinGW() w systemie Windows, ale może sprawdzać obecność niepożądanych przedrostków w PATH z niepowiązanych powodów. CMake 3.6 przywrócił to zachowanie na platformach innych niż Windows, a teraz zostało to przywrócone również na platformach Windows.
Jeśli chodzi o ulepszenia modułów, warto zauważyć, że OutsideProject zawiera teraz opcję BUILD_JOB_SERVER_AWARE dla komendy OutsideProject_Add(). Ta opcja umożliwia integrację serwera zadań GNU Make, gdy BUILD_COMMAND jest jawnie używany z niektórymi generatorami Makefile.
Z innych zmian które wyróżniają się na tle nowej wersji:
- Usunięto polecenie „exec_program()”, które było przestarzałe w wersji 3.0. Aby wykonać procesy, użyj polecenia „execute_process()”.
- Pliki wygenerowane przy użyciu trybu „FILE_SET” są teraz domyślnie traktowane jako prywatne, co pozwala na wydajniejszy wykres kompilacji w generatorach Ninja.
- Zmienna środowiskowa CMAKE_PREFIX_PATH może teraz zawierać listę wyszukiwanych przedrostków rozdzielonych średnikami.
- Podczas korzystania z narzędzi MinGW w środowisku Windows MSYSTEM, przedrostki $MSYSTEM_PREFIX/local i $MSYSTEM_PREFIX są teraz dodawane do CMAKE_SYSTEM_PREFIX_PATH.
- Prekompilowane pliki binarne systemu Linux x86_64 dostępne na cmake.org wymagają teraz GLIBC 2.17 lub nowszego.
- Kompilatory oparte na Cray Clang obsługują teraz identyfikator kompilatora CrayClang.
- Kompilator OrangeC obsługuje teraz identyfikator kompilatora OrangeC.
Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w następujący link.
Pobierz nową wersję CMake
Osoby zainteresowane możliwością zainstalowania nowej wersji Cmake w swoim systemie powinny wiedzieć, że nową wersję można pobrać z sekcji pobierania na stronie projektu. Link jest taki.
W przypadku Linuksa w większości dystrybucji wystarczy wykonać polecenia aktualizacji, aby uzyskać nową wersję. Chociaż jeśli wolisz kompilować z kodu źródłowego, po prostu pobierz pakiet odpowiadający Twojej architekturze, rozpakuj i wykonaj polecenia kompilacji (już w folderze):
./bootstrap
make -j$(nproc)
sudo make install