CMake Fácil: Plantilla Reutilizable para tu Primer Proyecto en C++

Guía práctica de CMake: plantilla reutilizable para tu primer proyecto C++ con CMakeLists.txt, gestión de dependencias, builds fuera del árbol y pruebas.

20 ago 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Este artículo fue publicado originalmente en Valerius Petrini Programming Blog el 08/05/2025 y aquí se presenta una versión reescrita y en español titulada CMake Made Simple: A Reusable Template for Your First C++ Project

Empezar un proyecto C++ escribiendo g++ main.cpp -o main está bien para programas pequeños pero cuando el código crece con múltiples ficheros, librerías y dependencias, compilar desde la línea de comandos se vuelve tedioso y propenso a errores. CMake es un generador de sistemas de compilación multiplataforma que automatiza y organiza la construcción de proyectos C++. Con un fichero CMakeLists.txt puedes generar scripts de compilación para Ninja o Make y olvidarte de invocar largos comandos a mano.

Por qué usar CMake ventajas principales: compilación incremental para recompilar solo archivos cambiados; gestión de dependencias mediante find_package o FetchContent; builds fuera del árbol de origen para mantener limpios los ficheros fuente; buen soporte en IDEs y editores como VSCode y Visual Studio con IntelliSense y depuración; soporte para varios lenguajes además de CXX como C, C# y CUDA. Estas propiedades aceleran el desarrollo de aplicaciones a medida y software a medida para clientes.

Requisitos previos instala cmake y Ninja. En Windows descarga los binarios de las webs oficiales y añade los ejecutables a la variable PATH. En Linux usa el gestor de paquetes de tu distribución, por ejemplo en Ubuntu sudo apt install cmake ninja-build. Tener estas herramientas te permite usar el flujo cmake -S . -B build -GNinja y luego cmake --build build.

Estructura de proyecto recomendada crea un directorio con la siguiente estructura mínima: un directorio src con main.cpp, un directorio test con test.cpp, un directorio include para los hpp, un fichero CMakeLists.txt en la raíz y opcionalmente un Makefile que envuelva comandos de Ninja como atajo. Al ejecutar cmake se creará el directorio build donde quedarán todos los ficheros de compilación y los ejecutables pueden colocarse en build/bin.

Encabezado básico de CMakeLists.txt empieza con cmake_minimum_required(VERSION 3.10) y project(NombreProyecto VERSION 0.1 LANGUAGES CXX). Define variables para los nombres de los ejecutables con set. Obliga la versión de C++ con set(CMAKE_CXX_STANDARD 17) y set(CMAKE_CXX_STANDARD_REQUIRED ON). Para que los ejecutables salgan en build/bin usa set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin). Usa file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS src/*.cpp) y file(GLOB_RECURSE SOURCES_TEST CONFIGURE_DEPENDS src/*.cpp test/*.cpp) para agrupar automáticamente fuentes y detectar nuevos ficheros al reconfigurar.

Crear el ejecutable añade los ficheros con add_executable(${EXEC_NAME} ${SOURCES}) y añade la ruta de cabeceras con target_include_directories(${EXEC_NAME} PRIVATE include/). Configura flags útiles para desarrollo con target_compile_options(${EXEC_NAME} PRIVATE -Wall -Wextra -fdiagnostics-color=always -g) que activan advertencias, color en diagnósticos y símbolos de depuración.

Separar opciones por configuración de compilación no quieres las mismas opciones en Debug y Release. En Debug conviene -Wall -Wextra -fdiagnostics-color=always -g y en Release conviene -O3. En CMake puedes usar expresiones de configuración para aplicar opciones distintas según la variable CMAKE_BUILD_TYPE o la configuración de la plataforma; de este modo obtienes builds optimizados para producción y builds con símbolos para desarrollo y depuración.

Evitar repeticiones extrae opciones comunes a una biblioteca interfaz con add_library(common_flags INTERFACE) y target_compile_options(common_flags INTERFACE ...) y luego enlaza esa interfaz a cada ejecutable con target_link_libraries(${EXEC_NAME} PRIVATE common_flags). Esto mantiene el CMakeLists.txt limpio y evita duplicar bloques de configuración entre ejecutables y tests.

Importar librerías externas por ejemplo Boost usa find_package(Boost REQUIRED COMPONENTS filesystem) y luego target_link_libraries(${EXEC_NAME} PRIVATE common_flags Boost::filesystem). El mismo patrón sirve para muchas bibliotecas y facilita integrar dependencias en aplicaciones a medida y software a medida con módulos como Boost o con librerías modernas encontradas por CMake.

Flujo con Makefile opcional un Makefile puede envolver comandos cmake para simplificar setup, build y run. Un flujo recomendado es ejecutar make setup que lance cmake -S . -B build -GNinja -DCMAKE_BUILD_TYPE=Debug, luego make build que ejecute cmake --build build --config Debug -- -jN, y make run que compile y luego ejecute el binario en build/bin. Este atajo resulta útil para equipos y para scripts de integración continua.

Consejos prácticos evita incluir archivos binarios y temporales en el repositorio; mantén include para cabeceras y src para implementaciones; añade pruebas en test y usa CMake para recopilar tanto el ejecutable principal como los ejecutables de test. Aprovecha la integración con IDEs para depurar y navegar el código, y usa CMake Presets o toolchains para reproducir builds en entornos CI.

Sobre Q2BSTUDIO Q2BSTUDIO es una empresa de desarrollo de software que crea aplicaciones a medida y software a medida para clientes de distintos sectores. Somos especialistas en inteligencia artificial y ofrecemos soluciones de ia para empresas, agentes IA y servicios de inteligencia de negocio integrando herramientas como power bi. También brindamos servicios de ciberseguridad y servicios cloud aws y azure para desplegar, escalar y asegurar aplicaciones. Nuestra experiencia combina desarrollo a medida, arquitecturas cloud y modelos de IA para entregar productos robustos y escalables.

Servicios ofrecidos por Q2BSTUDIO incluyen desarrollo de aplicaciones a medida, consultoría en software a medida, implementación de soluciones de inteligencia artificial e ia para empresas, creación de agentes IA personalizados, proyectos de inteligencia de negocio con power bi, servicios de ciberseguridad y auditoría, y despliegue en servicios cloud aws y azure. Estas capacidades hacen que utilicemos flujos de trabajo profesional como CMake para proyectos C++ cuando la solución lo requiere.

Palabras clave para posicionamiento aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio ia para empresas agentes IA power bi aparecen a lo largo del texto para mejorar la visibilidad y conectar este contenido con necesidades reales de empresas que buscan desarrollo a medida y soluciones basadas en IA y cloud.

Conclusión con recursos rápidos con una plantilla básica de CMakeLists.txt y un Makefile de envoltura puedes empezar un proyecto C++ escalable y organizado. Usar CMake facilita añadir tests, integrar bibliotecas externas y cambiar entre Debug y Release sin reescribir comandos. Si buscas ayuda profesional para poner en marcha un proyecto, optimizar una base de código o desarrollar una solución con inteligencia artificial y despliegue en aws o azure, en Q2BSTUDIO podemos ayudarte a diseñar e implementar la solución adecuada.

Contacto y siguiente paso ponte en contacto con el equipo de Q2BSTUDIO para evaluar tu proyecto de software a medida, soluciones de inteligencia artificial, ciberseguridad, agentes IA o integraciones con power bi y servicios cloud aws y azure y recibe una propuesta personalizada.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat