Kilka dni temu Udostępniono wieloplatformowy generator skryptów CMake 3.15 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 to wieloplatformowe narzędzie do generowania lub automatyzacji kodu. Nazwa jest skrótem od „cross platform make” (make cross platform, poza użyciem „make” w nazwie, CMake to oddzielny zestaw i wyższy poziom niż wspólny system make systemu Unix, będąc podobnym do autotools.
O CMake
CMake wyróżnia się prostym językiem skryptowym, narzędzia do rozszerzania funkcjonalności na moduły, minimalna liczba zależności (brak powiązań z M4, Perl lub Python), obsługa buforowania, dostępność narzędzi do kompilacji krzyżowej, obsługa generowania plików assemblerów dla szerokiego zakresu systemów kompilatorów i kompilatorów.
Narzędzia ctest i cpack do definiowania scenariuszy testowych i tworzenia pakietów, z narzędziem cmake-gui do interaktywnej konfiguracji parametrów kompilacji.
CMake służy do sterowania procesem kompilacji oprogramowania przy użyciu prostych i niezależnych plików konfiguracyjnych platformy. Cmake generuje natywne pliki Makefile i obszary robocze, których można używać w żądanym środowisku programistycznym.
Jest on porównywalny z systemem kompilacji Unix GNU, ponieważ proces jest kontrolowany przez pliki konfiguracyjne, w przypadku CMake o nazwie CMakeLists.txt.
W przeciwieństwie do systemu budowania GNU, który jest ograniczone do platform Unix, CMake obsługuje generowanie plików dla różnych systemów operacyjnych, co ułatwia konserwację i eliminuje potrzebę posiadania wielu zestawów plików dla każdej platformy.
Proces budowania jest kontrolowany przez utworzenie co najmniej jednego pliku CMakeLists.txt w każdym katalogu (w tym w podkatalogach).
Kod CMake jest napisany w C ++ i jest rozpowszechniany na licencji BSD.
Główne nowe funkcje CMake 3.15
Ta nowa wersja podkreślone pojawieniem się początkowej obsługi generatora dla języka Swift Opracowany przez firmę Apple został dodany do generatora skryptów montażowych Ninja Toolkit.
Poza tym, pojawia się również wsparcie dla opcji kompilatora Clang dla Windows, który jest zbudowany z ABI MSVC, ale używa opcji wiersza poleceń w stylu GNU.
Twórcy podkreślają, że zmienne CMAKE_MSVC_RUNTIME_LIBRARY
y MSVC_RUNTIME_LIBRARY
są dodawane w celu wybrania bibliotek wykonawczych używanych przez kompilatory ABI MSVC
(MS VisualStudio).
Dla kompilatorów takich jak MSVC
W CMAKE__FLAGS
Domyślnie lista ostrzegawczych flag kontrolnych, takich jak „/ W3”, jest zatrzymana.
Spośród innych ulepszeń, które zostały podkreślone w ogłoszeniu o wydaniu tej nowej wersji, znajdujemy następujące:
- Dodano wyrażenie generujące '
COMPILE_LANG_AND_ID
: »Aby zdefiniować opcje kompilatora dla plików docelowych, które używają zmiennychCMAKE__COMPILER_ID
yLANGUAGE
dla każdego pliku kodu - Wyrażenia generatora
C_COMPILER_ID, CXX_COMPILER_ID, CUDA_COMPILER_ID,
Fortran_COMPILER_ID, COMPILE_LANGUAGE, COMPILE_LANG_AND_ID
yPLATFORM_ID
dodać obsługę dopasowywania wartości do listy, elementy oddzielone przecinkami - Zmienna została dodana
CMAKE_FIND_PACKAGE_PREFER_CONFIG
, w którym wywołanie find_package () będzie najpierw szukać pliku konfiguracyjnego pakietu, nawet jeśli moduł wyszukiwania jest dostępny - W przypadku bibliotek interfejsów dodano obsługę ustawiania właściwości
PUBLIC_HEADER y PRIVATE_HEADER
, którego nagłówki można skonfigurować poleceniem instalacji (TARGETS) przekazującym argumentyPUBLIC_HEADER
yPRIVATE_HEADER
- Zmienna została dodana
CMAKE_VS_JUST_MY_CODE_DEBUGGING
i obiekt docelowyVS_JUST_MY_CODE_DEBUGGING
aby włączyć tryb „Tylko mój kod” w debugerze programu Visual Studio podczas kompilowania przy użyciu MSVC cl 19.05 i nowszych wersji. - Przerobiono moduł FindBoost, który jest teraz w pełni opracowywany w trybach konfiguracji i modułów z obecnością innych modułów wyszukiwania
- Do polecenia message () dodano obsługę typów NOTICE, VERBOSE, DEBUG i TRACE
- Polecenie „export (PACKAGE)” teraz nic nie robi, dopóki nie zostanie jawnie włączone przez zmienną
CMAKE_EXPORT_PACKAGE_REGISTRY
.
Jeśli chcesz dowiedzieć się więcej na ten temat, skonsultuj się poniższy link.