Skip to content

AudioLab Build System Guide

🎯 Overview

AudioLab usa un sistema de build moderno con CMake que organiza TODOS los artifacts temporales en _ARTIFACTS/.

📂 Estructura de Directorios

audio-lab/
├── CMakeLists.txt              # ← Root build configuration
├── build.bat                   # ← Windows build script
├── 04_CORE/                    # ← Core library source
│   ├── CMakeLists.txt          # ← CORE build config
│   ├── 04_00_type_system/
│   ├── 04_01_core_interfaces/
│   ├── ... (16 subsystems)
│   └── 04_15_core_config/
├── 05_MODULES/                 # ← Audio processing modules
│   └── 05_99_EXAMPLES/
│       ├── simple_test/        # ← Simple build test (working)
│       └── delay_example/      # ← Delay plugin (needs API fixes)
└── _ARTIFACTS/                 # ← ALL build outputs HERE
    ├── build/                  # ← CMake build files
    │   └── Release/            # ← Build configuration
    ├── binaries/               # ← Final executables & libraries
    │   └── Release/
    │       ├── audiolab_core.lib  (2.5 MB)
    │       └── simple_test.exe    (14 KB)
    ├── logs/                   # ← Build logs
    └── temp/                   # ← Temporary files

🚀 Cómo Compilar

Opción 1: Script automático (Windows)

build.bat

Opción 2: Manual

# Paso 1: Configurar CMake
cmake -B _ARTIFACTS/build/Release -S . -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release

# Paso 2: Compilar
cmake --build _ARTIFACTS/build/Release --config Release

# Paso 3: Ejecutar
_ARTIFACTS/binaries/Release/simple_test.exe

📦 Qué se Genera

_ARTIFACTS/build/Release/

  • Archivos de CMake Cache
  • Project files (.sln, .vcxproj)
  • Archivos objeto (.obj)
  • Archivos temporales de compilación

_ARTIFACTS/binaries/Release/

  • audiolab_core.lib (2.5 MB) - Librería estática del CORE
  • simple_test.exe (14 KB) - Ejemplo funcional
  • Futuros plugins y aplicaciones

_ARTIFACTS/logs/

  • Logs de compilación
  • Reportes de errores
  • Timestamps de build

🏗️ Arquitectura del Build

04_CORE Library

La librería audiolab_core compila 18 archivos .cpp de los 16 subsistemas:

04_CORE → audiolab_core.lib (STATIC library)
  ├── 160 header files (.hpp)
  └── 18 source files (.cpp)
      ├── error_handler.cpp
      ├── platform_paths.cpp
      ├── system_info.cpp
      ├── directory_operations.cpp
      ├── file_operations.cpp
      └── ... (13 more files)

Excluidos del build: - Benchmarks (requieren Google Benchmark) - Tests (requieren Catch2) - Persistence optimization (requiere LZ4)

Linking con CORE

Cualquier executable/plugin puede usar CORE así:

# En tu CMakeLists.txt
add_executable(my_plugin main.cpp)

target_link_libraries(my_plugin PRIVATE audiolab_core)

target_include_directories(my_plugin PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../)

✅ Estado Actual

✓ Funcionando

  • CMake configuration
  • 04_CORE library compila correctamente
  • simple_test enlaza con CORE y ejecuta
  • Outputs van a _ARTIFACTS/binaries/
  • Build files van a _ARTIFACTS/build/
  • Sistema multi-configuración (Debug/Release)

⚠️ Pendiente

  • delay_example (necesita arreglar API de Parameter)
  • Unit tests (integrar Catch2)
  • Benchmarks (integrar Google Benchmark)
  • Persistence optimization (añadir LZ4)
  • 05_MODULES completos
  • 08_PLUGINS

🧹 Limpiar Build

Para empezar desde cero:

# Eliminar TODO el build
rm -rf _ARTIFACTS/build/

# O limpiar completamente _ARTIFACTS
rm -rf _ARTIFACTS/

El próximo cmake recreará todo.

📝 Notas Técnicas

Compiler Warnings

Los warnings de CMakeCXXCompilerId.cpp son normales y no afectan:

warning LNK4006: "info_compiler" ya se definió

Estos son archivos internos de CMake para detectar el compilador.

Configuraciones de Build

  • Release: Optimizado, sin debug symbols
  • Debug: Con debug symbols, sin optimizaciones

Cambiar configuración:

cmake -B _ARTIFACTS/build/Debug -DCMAKE_BUILD_TYPE=Debug
cmake --build _ARTIFACTS/build/Debug --config Debug

Toolchain

  • Compiler: MSVC 19.44.35215.0 (Visual Studio 2022)
  • Generator: Visual Studio 17 2022
  • Architecture: x64
  • C++ Standard: C++20

🎯 Próximos Pasos

  1. Arreglar delay_example: Actualizar para usar API real de Parameter
  2. Añadir más ejemplos: Reverb, Compressor, EQ, etc.
  3. Integrar tests: Añadir Catch2 y ejecutar unit tests
  4. CI/CD: Automatizar builds en GitHub Actions
  5. Cross-platform: Añadir soporte para macOS y Linux

🔗 Referencias


Última actualización: 2025-10-17 Autor: AudioLab Build System Versión: 1.0.0