Skip to content

🔧 Build Issues - Soluciones Rápidas

Problemas comunes de compilación en AudioLab y sus soluciones.


📋 ÍNDICE RÁPIDO


❌ CANNOT FIND JUCE

Síntoma

CMake Error: Could not find JUCE

o

fatal error: JuceHeader.h: No such file or directory

Diagnóstico

CMake no puede encontrar el framework JUCE.

Soluciones

Opción 1: Especificar path manualmente

cmake -DJUCE_DIR=C:/path/to/JUCE ..

Opción 2: Colocar JUCE en ubicación esperada

audio-lab/
  └─ 01_CORE/
      └─ 06_third_party/
          └─ juce/          ← Aquí

Opción 3: Variable de entorno

# Windows
set JUCE_DIR=C:\JUCE

# Unix
export JUCE_DIR=/path/to/JUCE

Verificación

cmake --build build --target juce_core

Si compila, JUCE está correctamente configurado.


❌ UNDEFINED REFERENCE

Síntoma

undefined reference to `AudioProcessor::process()'

o

LNK2019: unresolved external symbol

Diagnóstico

Linker no puede encontrar la definición de un símbolo.

Causas Comunes

1. Archivo .cpp faltante

Solución: Agregar a CMakeLists.txt

target_sources(mi_plugin PRIVATE
    src/PluginProcessor.cpp  # ← Asegurar que está incluido
)

2. Library no linkeada

Solución: Agregar library

target_link_libraries(mi_plugin PRIVATE
    juce::juce_audio_processors  # ← Library faltante
)

3. Orden de linking incorrecto

Solución: Reordenar libraries (dependencias al final)

target_link_libraries(mi_plugin PRIVATE
    mi_library
    juce::juce_core  # Después de librerías que dependen de JUCE
)

4. Inline function no inlined

Causa: Function declarada inline pero definición no visible.

Solución: Mover definición a header o remover inline.


❌ MODULE NOT FOUND

Síntoma

CMake Error: find_package(JUCE) failed

Solución

1. Regenerar CMake cache

# Windows
.\scripts\clean.ps1 -Cache
cmake --preset developer

# Unix
./scripts/clean.sh --cache
cmake --preset developer

2. Verificar CMakePresets.json existe

Debe estar en raíz del proyecto.

3. Actualizar CMake

cmake --version  # Mínimo 3.22


❌ OUT OF MEMORY

Síntoma

c++: fatal error: Killed signal terminated program cc1plus

o en Windows:

fatal error C1060: compiler is out of heap space

Soluciones

1. Reducir paralelismo

# Menos jobs paralelos
cmake --build build -j4  # En lugar de -j16

2. Unity builds (combinar archivos)

En CMakeLists.txt:

set_target_properties(mi_plugin PROPERTIES
    UNITY_BUILD ON
    UNITY_BUILD_BATCH_SIZE 8
)

3. Usar 64-bit toolchain

Verificar que no estás usando toolchain de 32-bit.

4. Deshabilitar precompiled headers

set(AUDIOLAB_USE_PCH OFF CACHE BOOL "" FORCE)


❌ PERMISSION DENIED

Síntoma

Permission denied: cannot create output file

Causas

  • Antivirus bloqueando: Agregar exclusión para build directory
  • Proceso ejecutándose: Cerrar plugin host (DAW) o standalone
  • Permisos de carpeta: Verificar write permissions

Solución

# Windows: Verificar procesos
Get-Process | Where-Object {$_.Path -like "*AudioLab*"}

# Cerrar todos
Stop-Process -Name "AudioLab*"

❌ PATH TOO LONG (Windows)

Síntoma

error: filename or extension is too long

Causa

Windows tiene límite de 260 caracteres por default.

Soluciones

1. Usar path más corto

# En lugar de:
C:\Users\MiNombre\Documents\Projects\Audio\AudioLab\build\...

# Usar:
C:\AudioLab\build\...

2. Habilitar long paths (Windows 10+)

Registry edit:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
LongPathsEnabled = 1

O via PowerShell (admin):

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
    -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force


💡 DEBUGGING WORKFLOW

Para cualquier error de build:

  1. Leer error completo: Primera y última línea suelen ser claves
  2. Build limpio: ./scripts/clean.sh --all && ./scripts/build.sh
  3. Build verbose: cmake --build build --verbose
  4. Un target a la vez: cmake --build build --target mi_plugin
  5. Verificar environment: CMake variables, PATH, SDK versions
  6. Buscar en logs: build/CMakeFiles/CMakeError.log

🔗 RECURSOS