cmkr: deklarativ CMake-generering för renare C++-byggen
Upplev ett deklarativt byggflöde genom att skriva en enda cmake.toml för att producera standard CMake-projekt, inklusive mål och beroendenord). Duncan Ogilvie skapade cmkr som ett verktygsverktyg för att omsluta CMake med en Cargo-liknande TOML-manifest, vilket bevarar CMake-kompatibilitet samtidigt som det minskar boilerplateord). Nyckelfunktioner inkluderar TOML-konfiguration, automatisk CMakeLists.txt-generering, FetchContent och vcpkg-integration, samt självstartande för CI; utvecklare som vill ha mindre manuell CMake-skriptning får mest nyttaord).
Vad gör cmkr i praktiska termer?
cmkr läser en människoläsbar cmake.toml-fil och genererar idiomatiska CMakeLists.txt-filer automatiskt. Verktyget accepterar projektmetadata, flera måldefinitioner (exekverbara filer, statiska och delade bibliotek), villkorlig logik och plattformsspecifika alternativ i TOML, och avger sedan standard CMake som vilken CMake-medveten IDE eller byggsteg som helst kan konsumera. Detta ersätter handskrivna CMake-skript med en enda deklarativ manifest för varje projekt.
Hur beter det sig i CI och delade projekt?
cmkr erbjuder självbootstrapping, så ett arkiv kan inkludera de genererade filerna och ett bootstrap-skript som låter nedströmsbyggare köra med endast standard CMake och en C++-kompilator. Den designen innebär att CI-pipelines inte behöver cmkr förinstallerat; den genererade CMake förblir den kanoniska ingången för automatiserade byggnader, vilket gör projektdelning och integration med befintliga CI-arbetsflöden enkelt.
Är cmkr säkert och hur brant är inlärningskurvan?
Verktyget bevarar CMake-kompatibilitet genom att producera standard CMakeLists.txt, så det ersätter inte CMake vid byggtid. Villkorlig logik och plattformsspecifika regler finns i TOML, vilket kräver att man lär sig cmkrs kartläggning från deklarativa poster till CMake-konstruktioner. Utvecklarens bakgrund med C++-verktyg och tidigare erfarenhet av CMake kommer att minska uppstartstiden; nybörjare drar nytta av mindre verbos konfiguration men måste lära sig manifest-schema.
Tydligt val för C++-team som vill ha deklarativ byggmetadata
cmkr passar utvecklare som föredrar att skriva en enda TOML-manifest istället för att underhålla flera CMake-skript; det håller projekt kompatibla med befintliga CMake-verktyg och IDE:er samtidigt som det gör det möjligt att starta upp repository. Den primära avvägningen är det extra abstraktionslagret: team måste mappa CMake-koncept till det deklarativa schemat, vilket lägger till ett initialt inlärningssteg innan tidsbesparingarna framträder.