cmkr: generación declarativa de CMake para construcciones de C++ más limpias
Experimenta un flujo de construcción declarativo escribiendo un solo cmake.toml para producir proyectos estándar de CMake, incluidos objetivos y dependenciaswords). Duncan Ogilvie creó cmkr como una herramienta de utilidades para envolver CMake con un manifiesto TOML similar a Cargo, preservando la compatibilidad con CMake mientras reduce el boilerplatewords). Las capacidades clave incluyen configuración TOML, generación automática de CMakeLists.txt, integración de FetchContent y vcpkg, y auto-arranque para CI; los desarrolladores que desean menos scripting manual de CMake obtienen el mayor beneficiowords).
¿Qué hace cmkr en términos prácticos?
cmkr lee un archivo cmake.toml legible por humanos y genera automáticamente archivos CMakeLists.txt idiomáticos. La herramienta acepta metadatos del proyecto, múltiples definiciones de objetivos (ejecutables, bibliotecas estáticas y compartidas), lógica condicional y opciones específicas de la plataforma en TOML, y luego emite CMake estándar que cualquier IDE o paso de construcción compatible con CMake puede consumir. Esto reemplaza los scripts de CMake escritos a mano con un único manifiesto declarativo para cada proyecto.
¿Cómo se comporta en CI y proyectos compartidos?
cmkr ofrece autoarranque, por lo que un repositorio puede incluir los archivos generados y un script de arranque que permite a los constructores posteriores ejecutar solo con CMake estándar y un compilador C++. Ese diseño significa que las tuberías de CI no necesitan cmkr preinstalado; el CMake generado sigue siendo la entrada canónica para construcciones automatizadas, lo que hace que compartir proyectos e integrarse con flujos de trabajo de CI existentes sea sencillo.
¿Es cmkr seguro y qué tan pronunciada es la curva de aprendizaje?
La herramienta preserva la compatibilidad con CMake al producir CMakeLists.txt estándar, por lo que no reemplaza CMake en el tiempo de construcción. La lógica condicional y las reglas específicas de la plataforma residen en TOML, lo que requiere aprender el mapeo de cmkr de entradas declarativas a construcciones de CMake. La experiencia del desarrollador con herramientas de C++ y la experiencia previa con CMake reducirán el tiempo de adaptación; los principiantes se benefician de una configuración menos verbosa pero deben aprender el esquema del manifiesto.
Elección clara para equipos de C++ que quieren metadatos de construcción declarativos
cmkr se adapta a los desarrolladores que prefieren escribir un único manifiesto TOML en lugar de mantener múltiples scripts de CMake; mantiene los proyectos compatibles con las herramientas y IDEs de CMake existentes mientras hace posible el arranque del repositorio. La principal compensación es la capa adicional de abstracción: los equipos deben mapear los conceptos de CMake en el esquema declarativo, lo que añade un paso de aprendizaje inicial antes de que aparezcan los ahorros de tiempo.




