For nogle dage siden CMake 3.15 open source scriptgenerator på tværs af platforme frigivet som fungerer som et alternativ til Autotools og bruges i projekter som KDE, LLVM / Clang, MySQL, MariaDB, ReactOS og Blender.
CMake er et genererings- eller automatiseringsværktøj til multiplatform. Navnet er en forkortelse for "cross platform make" (lav cross platform, ud over brugen af "make" i navnet, CMake er en separat pakke og højere niveau end det fælles mærkesystem af Unix, der ligner autotools.
Om CMake
CMake er bemærkelsesværdig for at levere et simpelt script-sprog værktøjer til at udvide funktionalitet på tværs af moduler, minimalt antal afhængigheder (ingen binding til M4, Perl eller Python), cachestøtte, tilgængeligheden af værktøjer til krydskompilering, understøttelse af generering af samlingsfiler til en bred vifte kompilatorsystemer og kompilatorer.
Ctest- og cpack-hjælpeprogrammerne til at definere testscenarier og pakkeoprettelse med cmake-gui-værktøjet til interaktiv konfiguration af build-parametre.
CMake bruges til at kontrollere kompileringsprocessen af softwaren ved hjælp af enkle og uafhængige konfigurationsfiler fra platformen. Cmake genererer native makefiles og arbejdsområder, der kan bruges i det ønskede udviklingsmiljø.
Det kan sammenlignes med Unix GNU build-systemet, idet processen styres af konfigurationsfiler, i tilfælde af CMake kaldet CMakeLists.txt.
I modsætning til GNU-byggesystemet, hvilket er begrænset til Unix-platforme, CMake understøtter generering af filer til forskellige operativsystemer, hvilket letter vedligeholdelse og eliminerer behovet for at have flere sæt filer til hver platform.
Bygningsprocessen styres ved at oprette en eller flere CMakeLists.txt-filer i hver bibliotek (inklusive underkataloger).
CMake-koden er skrevet i C ++ og distribueres under BSD-licensen.
CMake 3.15 Vigtigste nye funktioner
Denne nye version fremhævet med ankomsten af den første generatorstøtte til Swift-sproget udviklet af Apple er blevet føjet til Ninja Toolkit-samlingsscriptgeneratoren.
Udover dette, kommer også understøttelse af Clang-kompilatorindstillingen til Windows, der er bygget med ABI MSVC, men bruger kommandolinjemulighederne i GNU-stil.
Udviklerne understreger, at variablerne CMAKE_MSVC_RUNTIME_LIBRARY
y MSVC_RUNTIME_LIBRARY
tilføjes for at vælge runtime-biblioteker, der bruges af kompilatorer ABI MSVC
(MS VisualStudio).
For kompilatorer som MSVC
i CMAKE__FLAGS
Som standard stoppes listen over advarselskontrolflag som "/ W3".
Af de andre forbedringer, der fremhæves i meddelelsen om frigivelsen af denne nye version, finder vi følgende:
- Tilføjet det genererende udtryk '
COMPILE_LANG_AND_ID
: »At definere kompilatorindstillinger for målfiler, der bruger variablerCMAKE__COMPILER_ID
yLANGUAGE
for hver kodefil - Generatorudtrykkene
C_COMPILER_ID, CXX_COMPILER_ID, CUDA_COMPILER_ID,
Fortran_COMPILER_ID, COMPILE_LANGUAGE, COMPILE_LANG_AND_ID
yPLATFORM_ID
tilføj support til at matche en værdi til en liste, kommaseparerede emner - Variablen blev tilføjet
CMAKE_FIND_PACKAGE_PREFER_CONFIG
, hvor opkaldet til find_package () først ser efter pakkekonfigurationsfilen, selvom søgemodulet er tilgængeligt - For interface-biblioteker er der tilføjet support til indstilling af egenskaber
PUBLIC_HEADER y PRIVATE_HEADER
, hvis overskrifter kan konfigureres ved hjælp af installationskommandoen (TARGETS), der sender argumenternePUBLIC_HEADER
yPRIVATE_HEADER
- Variablen blev tilføjet
CMAKE_VS_JUST_MY_CODE_DEBUGGING
og destinationsegenskabenVS_JUST_MY_CODE_DEBUGGING
for at aktivere "Just My Code" -tilstand i Visual Studio-fejlfindingsprogrammet ved kompilering ved hjælp af MSVC cl 19.05 og nyere versioner. - FindBoost-modulet er blevet omarbejdet, som nu arbejdes mere udførligt i konfigurations- og modultilstandene med tilstedeværelsen af andre søgemoduler
- Understøttelse af NOTICE-, VERBOSE-, DEBUG- og TRACE-typerne er blevet føjet til kommandoen message ()
- Kommandoen "eksport (PAKKE)" gør nu intet, før den eksplicit er aktiveret via variablen
CMAKE_EXPORT_PACKAGE_REGISTRY
.
Hvis du vil vide mere om det, kan du konsultere følgende link.