El comando add_subdirectory
en CMake se utiliza para incluir un subdirectorio en la compilación de un proyecto. Permite organizar proyectos grandes dividiéndolos en módulos o bibliotecas separadas, cada uno con su propio CMakeLists.txt
.
add_subdirectory
La sintaxis básica es:
add_subdirectory(<source_dir> [<binary_dir>] [EXCLUDE_FROM_ALL])
<source_dir>
: Ruta del subdirectorio que contiene el CMakeLists.txt
.
<binary_dir>
(opcional): Ruta donde se generarán los archivos de compilación para ese subdirectorio.
EXCLUDE_FROM_ALL
(opcional): Evita que los objetivos de este subdirectorio se compilen por defecto.
mi_proyecto/
│── CMakeLists.txt
│── src/
│ │── CMakeLists.txt
│ │── main.cpp
│── lib/
│── CMakeLists.txt
│── mi_lib.cpp
│── mi_lib.h
CMakeLists.txt
en el directorio raíz
cmake_minimum_required(VERSION 3.10)
project(MiProyecto)
add_subdirectory(lib) # Agrega el subdirectorio 'lib'
add_executable(mi_programa src/main.cpp)
target_link_libraries(mi_programa mi_lib) # Enlaza la biblioteca del subdirectorio
CMakeLists.txt
en lib/
add_library(mi_lib mi_lib.cpp) # Define una biblioteca
main.cpp
#include <iostream>
#include "mi_lib.h"
int main() {
imprimirMensaje();
return 0;
}
mi_lib.h
#ifndef MI_LIB_H
#define MI_LIB_H
void imprimirMensaje();
#endif
mi_lib.cpp
#include <iostream>
#include "mi_lib.h"
void imprimirMensaje() {
std::cout << "¡Hola desde mi_lib!" << std::endl;
}
Jorge García
Fullstack developer