--- name: compile_cpp_app kind: pipeline lang: bash domain: pipelines version: "1.0.0" purity: impure signature: "compile_cpp_app(app_name?: string) -> void" description: "Pipeline que resuelve la app C++ desde el nombre o CWD, la cross-compila para Windows con mingw-w64, y despliega el .exe al escritorio de Windows. Composicion de resolve_cpp_app_dir + build_cpp_windows + deploy_cpp_exe_to_windows." tags: [cpp, compile, windows, mingw, cross-compile, deploy, pipeline] uses_functions: - resolve_cpp_app_dir_bash_infra - build_cpp_windows_bash_infra - deploy_cpp_exe_to_windows_bash_infra uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] tested: false tests: [] test_file_path: "" file_path: "bash/functions/pipelines/compile_cpp_app.sh" params: - name: app_name desc: "Nombre de la app a compilar (opcional). Sin arg se deduce desde el directorio actual si estamos dentro de cpp/apps// o projects/*/apps//." output: "Compila el .exe y lo despliega al escritorio de Windows. Imprime progreso por steps a stderr y resumen final con ls -lh del .exe resultante." --- ## Ejemplo ```bash # Desde dentro del directorio de la app (sin arg) cd /home/lucas/fn_registry/cpp/apps/chart_demo fn run compile_cpp_app # Con nombre explicito desde cualquier directorio fn run compile_cpp_app registry_dashboard # Directo bash bash/functions/pipelines/compile_cpp_app.sh graph_explorer ``` ## Flujo 1. `resolve_cpp_app_dir` — deduce nombre y directorio absoluto de la app (desde CWD o arg) 2. Verifica que existe `CMakeLists.txt` en el directorio de la app 3. `build_cpp_windows` — cross-compila con mingw-w64 solo el target de la app 4. `deploy_cpp_exe_to_windows` — copia exe, DLLs, assets, enrichers y runtime al escritorio de Windows 5. Imprime `ls -lh` del exe final en Desktop/apps// ## Variables de entorno - `FN_REGISTRY_ROOT` — raiz del registry; default `/home/lucas/fn_registry` - `BUILD_WIN` — directorio de build Windows; default `$FN_REGISTRY_ROOT/cpp/build/windows` - `WIN_DESKTOP_APPS` — directorio destino; default `/mnt/c/Users/lucas/Desktop/apps` ## Notas Reemplaza la logica del slash command `/compile`. No lleva tag `launcher` porque no es un pipeline TUI-lanzable (tarda minutos en compilar).