cmkr: generazione CMake dichiarativa per build C++ più puliti
Vivi un flusso di build dichiarativo scrivendo un singolo cmake.toml per produrre progetti CMake standard, inclusi obiettivi e dipendenze parole). Duncan Ogilvie ha creato cmkr come uno strumento di utilità per avvolgere CMake con un manifesto TOML simile a Cargo, preservando la compatibilità con CMake mentre riduce il boilerplate parole). Le principali capacità includono configurazione TOML, generazione automatica di CMakeLists.txt, integrazione di FetchContent e vcpkg, e auto-bootstrap per CI; gli sviluppatori che desiderano meno scripting manuale di CMake ottengono il massimo beneficio parole).
Cosa fa cmkr in termini pratici?
cmkr legge un file cmake.toml leggibile dall'uomo e genera automaticamente file CMakeLists.txt idiomatici. Lo strumento accetta metadati di progetto, definizioni di più target (eseguibili, librerie statiche e condivise), logica condizionale e opzioni specifiche per piattaforma in TOML, quindi emette CMake standard che qualsiasi IDE o fase di build consapevole di CMake può utilizzare. Questo sostituisce gli script CMake scritti a mano con un unico manifesto dichiarativo per ogni progetto.
Come si comporta in CI e progetti condivisi?
cmkr offre auto-bootstrapping, quindi un repository può includere i file generati e uno script di bootstrap che consente ai costruttori downstream di funzionare solo con CMake standard e un compilatore C++. Questo design significa che le pipeline CI non hanno bisogno di cmkr preinstallato; il CMake generato rimane l'input canonico per build automatizzate, rendendo la condivisione del progetto e l'integrazione con i flussi di lavoro CI esistenti semplici.
È cmkr sicuro e quanto è ripida la curva di apprendimento?
Lo strumento preserva la compatibilità con CMake producendo CMakeLists.txt standard, quindi non sostituisce CMake al momento della build. La logica condizionale e le regole specifiche per piattaforma si trovano in TOML, il che richiede di apprendere la mappatura di cmkr da voci dichiarative a costrutti CMake. Il background dello sviluppatore con gli strumenti C++ e l'esperienza precedente con CMake ridurranno il tempo di apprendimento; i principianti beneficiano di una configurazione meno verbosa ma devono imparare lo schema del manifesto.
Scelta chiara per i team C++ che vogliono metadati di build dichiarativi
cmkr si adatta agli sviluppatori che preferiscono scrivere un singolo manifesto TOML invece di mantenere più script CMake; mantiene i progetti compatibili con gli strumenti e gli IDE CMake esistenti, rendendo possibile il bootstrap del repository. Il principale compromesso è il livello aggiuntivo di astrazione: i team devono mappare i concetti di CMake nello schema dichiarativo, il che aggiunge un passaggio di apprendimento iniziale prima che i risparmi di tempo si manifestino.





