0Pricing
C++ Academy · Lección

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 build

Estructura de proyecto estándar

Una estructura limpia:

  • CMakeLists.txt
  • src/ — archivos de código fuente
  • include/ — encabezados públicos
  • tests/ — pruebas
  • third_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=Release

Advertencias 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

  1. Estructura de proyectos CMake y CMakeLists.txt
  2. Destinos, enlazado y visibilidad: PUBLIC, PRIVATE
  3. Uso de vcpkg y Conan para las dependencias
  4. Generación de archivos para IDE y compilaciones multiplataforma
← Volver a C++ Academy