Volver a la página principal
lunes 23 diciembre 2024
12

Cómo usar add_subdirectory en CMake

El comando add_subdirectory en CMake permite incluir y configurar directorios adicionales dentro de un proyecto, habilitando la construcción modular y organizada de aplicaciones. Es esencial para manejar proyectos grandes que contienen múltiples módulos o bibliotecas.

¿Qué es add_subdirectory en CMake?

add_subdirectory se utiliza para agregar un subdirectorio al árbol de compilación. Este comando indica a CMake que procese el archivo CMakeLists.txt ubicado en el subdirectorio especificado. Esto permite dividir un proyecto en partes más pequeñas, manteniendo configuraciones separadas para cada módulo.

Sintaxis de add_subdirectory

add_subdirectory(<source_dir> [binary_dir] [EXCLUDE_FROM_ALL])

Parámetros

Parámetro Descripción
<source_dir> Ruta al directorio que contiene el CMakeLists.txt que se desea incluir.
binary_dir] (Opcional) Ruta donde se generarán los archivos de compilación del subdirectorio.
EXCLUDE_FROM_ALL (Opcional) Si se incluye, evita que los objetivos del subdirectorio se incluyan en la metaetapa "all".

Ejemplo básico de uso

Estructura del proyecto:

Project/
├── CMakeLists.txt
├── src/
│   ├── CMakeLists.txt
│   ├── main.cpp
└── lib/
    ├── CMakeLists.txt
    ├── library.cpp
    ├── library.h

CMakeLists.txt en el directorio raíz:

cmake_minimum_required(VERSION 3.0)
project(MyProject)

add_subdirectory(src)
add_subdirectory(lib)

CMakeLists.txt en src/:

add_executable(MyApp main.cpp)
target_link_libraries(MyApp MyLibrary)

CMakeLists.txt en lib/:

add_library(MyLibrary library.cpp library.h)

Resultado

  • El proyecto se compila como un ejecutable (MyApp) que utiliza una biblioteca (MyLibrary).

Casos comunes de uso

  • Compilación modular: Divide el proyecto en múltiples subdirectorios según módulos o componentes.
  • Reutilización de código: Permite usar bibliotecas internas en múltiples proyectos.
  • Separación de responsabilidades: Mantiene configuraciones independientes para cada módulo, mejorando la organización.

Referencia oficial

Para más información, consulta la documentación oficial de CMake.

Etiquetas:
cmake
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer