cmkr : génération CMake déclarative pour des constructions C++ plus propres
Découvrez un flux de construction déclaratif en écrivant un seul cmake.toml pour produire des projets CMake standard, y compris des cibles et des dépendanceswords). Duncan Ogilvie a créé cmkr comme un outil utilitaire pour envelopper CMake avec un manifeste TOML similaire à Cargo, préservant la compatibilité CMake tout en réduisant le code standardwords). Les principales capacités incluent la configuration TOML, la génération automatique de CMakeLists.txt, l'intégration de FetchContent et vcpkg, et l'auto-démarrage pour CI ; les développeurs qui souhaitent moins de script CMake manuel tirent le plus de bénéficewords).
Que fait cmkr en termes pratiques ?
cmkr lit un fichier cmake.toml lisible par l'homme et génère automatiquement des fichiers CMakeLists.txt idiomatiques. L'outil accepte les métadonnées du projet, plusieurs définitions de cibles (exécutables, bibliothèques statiques et partagées), une logique conditionnelle et des options spécifiques à la plateforme en TOML, puis émet un CMake standard que tout IDE ou étape de construction compatible avec CMake peut consommer. Cela remplace les scripts CMake écrits à la main par un seul manifeste déclaratif pour chaque projet.
Comment se comporte-t-il dans CI et les projets partagés ?
cmkr offre un auto-démarrage, donc un dépôt peut inclure les fichiers générés et un script de démarrage qui permet aux constructeurs en aval de fonctionner uniquement avec CMake standard et un compilateur C++. Ce design signifie que les pipelines CI n'ont pas besoin de cmkr préinstallé ; le CMake généré reste l'entrée canonique pour les constructions automatisées, rendant le partage de projet et l'intégration avec les flux de travail CI existants simples.
cmkr est-il sûr et quelle est la courbe d'apprentissage ?
L'outil préserve la compatibilité CMake en produisant des CMakeLists.txt standard, donc il ne remplace pas CMake au moment de la construction. La logique conditionnelle et les règles spécifiques à la plateforme se trouvent dans TOML, ce qui nécessite d'apprendre le mappage de cmkr des entrées déclaratives aux constructions CMake. L'expérience du développeur avec les outils C++ et son expérience antérieure avec CMake réduiront le temps d'apprentissage ; les débutants bénéficient d'une configuration moins verbeuse mais doivent apprendre le schéma du manifeste.
Choix clair pour les équipes C++ qui souhaitent des métadonnées de construction déclaratives
cmkr convient aux développeurs qui préfèrent écrire un seul manifeste TOML au lieu de maintenir plusieurs scripts CMake ; il maintient les projets compatibles avec les outils et IDE CMake existants tout en rendant le démarrage du dépôt possible. Le principal compromis est la couche supplémentaire d'abstraction : les équipes doivent mapper les concepts CMake dans le schéma déclaratif, ce qui ajoute une étape d'apprentissage initiale avant que les économies de temps n'apparaissent.





