Estructura de proyectos CMake y CMakeLists.txt
Organice árboles de código fuente y escriba archivos CMakeLists básicos.
Estructura de proyectos CMake y CMakeLists.txt es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.
¿Por qué CMake?
CMake es el generador de sistemas de compilación de facto para C++. Produce archivos de proyecto para Make, Ninja, Visual Studio y Xcode a partir de una sola descripción.
CMakeLists.txt mínimo
El CMakeLists.txt útil más pequeño para un ejecutable individual.
cmake_minimum_required(VERSION 3.20)
project(MyApp LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(myapp main.cpp)Compilaciones fuera del árbol de código fuente
Compile siempre en un directorio independiente para mantener limpio el árbol de código fuente.
# from project root
cmake -B build
cmake --build buildEstructura de proyecto estándar
Una estructura limpia:
CMakeLists.txtsrc/— archivos de código fuenteinclude/— encabezados públicostests/— pruebasthird_party/— dependencias incluidas
Añadir subdirectorios
Recorra subdirectorios que tengan su propio CMakeLists.txt.
# top-level
add_subdirectory(src)
add_subdirectory(tests)Variables y propiedades
Establezca variables con set. Léelas con ${var}. Variables habituales: CMAKE_BUILD_TYPE, CMAKE_CXX_FLAGS.
set(CMAKE_BUILD_TYPE Release)
set(SOURCES src/a.cpp src/b.cpp)Buscar archivos dinámicamente
Utilice file(GLOB ...) para prototipos rápidos. En producción, enumere explícitamente los archivos de código fuente para que CMake vuelva a ejecutarse cuando se añadan archivos.
# Discouraged for production
file(GLOB SOURCES "src/*.cpp")
# Preferred
add_executable(myapp src/main.cpp src/util.cpp)Configuraciones de compilación
Configuraciones habituales: Debug, Release, RelWithDebInfo y MinSizeRel. Establézcalas con -DCMAKE_BUILD_TYPE=Release.
cmake -B build -DCMAKE_BUILD_TYPE=ReleaseAdvertencias del compilador
Habilite las advertencias como propiedades del target para que sean portables entre compiladores.
target_compile_options(myapp PRIVATE
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
$<$<CXX_COMPILER_ID:MSVC>:/W4>
)Estilo moderno de CMake
Prefiera los comandos basados en targets (target_*) en lugar de los globales. Así, las propiedades quedan delimitadas correctamente para targets específicos.
CMakePresets.json (CMake 3.19+)
Defina configuraciones reutilizables en CMakePresets.json para compartirlas entre los miembros del equipo.
Instalar el proyecto
Utilice comandos install para copiar ejecutables, bibliotecas y encabezados a las rutas de instalación.
install(TARGETS myapp DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)Comprobación rápida
¿Cuál es el patrón de directorios recomendado al ejecutar CMake?
Resumen
CMake es el generador estándar del sistema de compilación de C++. Escriba un CMakeLists.txt, compile fuera del árbol de código fuente y utilice comandos basados en targets. Use presets para compartir configuraciones y propiedades para las opciones del compilador.
Preguntas frecuentes
¿La lección «Estructura de proyectos CMake y CMakeLists.txt» es gratis?
Sí — el texto completo de «Estructura de proyectos CMake y CMakeLists.txt» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Estructura de proyectos CMake y CMakeLists.txt»?
Organice árboles de código fuente y escriba archivos CMakeLists básicos. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C++ Academy?
No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Estructura de proyectos CMake y CMakeLists.txt»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C++ Academy?
Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estructura de proyectos CMake y CMakeLists.txt
- Destinos, enlazado y visibilidad: PUBLIC, PRIVATE
- Uso de vcpkg y Conan para las dependencias
- Generación de archivos para IDE y compilaciones multiplataforma