From a09ae6b91398493acdfa01762c8a3bd72a3e84aa Mon Sep 17 00:00:00 2001 From: gusadmin Date: Tue, 14 Jul 2026 15:21:25 +0300 Subject: [PATCH] =?UTF-8?q?Codegen:=20=D1=83=D0=BA=D0=B0=D0=B7=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20--llvm-path=20=D0=B4=D0=BB=D1=8F=20ffigen=20(LLVM=20?= =?UTF-8?q?=D0=BD=D0=B0=20S:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ffigen внутри flutter_rust_bridge_codegen не находил libclang.dll (дефолтные пути вроде C:/Program Files/llvm), LLVM у нас на S:\dev\LLVM. Передаём --llvm-path <корень LLVM> из LIBCLANG_PATH. Co-Authored-By: Claude Opus 4.8 --- docs/CODEMAP.md | 3 ++- scripts/build-windows.ps1 | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/CODEMAP.md b/docs/CODEMAP.md index 7923470..3119ac2 100644 --- a/docs/CODEMAP.md +++ b/docs/CODEMAP.md @@ -49,7 +49,8 @@ cargo +stable install cargo-expand --version 1.0.95 --locked cargo +stable install flutter_rust_bridge_codegen --version 1.80.1 --features uuid --locked pushd flutter && flutter pub get && popd RUSTC_BOOTSTRAP=1 flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs \ - --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h + --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h \ + --llvm-path S:/dev/LLVM # ffigen ищет libclang.dll в дефолтных путях, LLVM у нас на S: ``` Пины FRB_VERSION/CARGO_EXPAND_VERSION — в `upstream.txt`. Шаг встроен в `build-windows.ps1` перед build.py. RUSTC_BOOTSTRAP=1 нужен, т.к. cargo-expand требует nightly-фич, а тулчейн 1.75 stable. diff --git a/scripts/build-windows.ps1 b/scripts/build-windows.ps1 index 36d84be..e23160f 100644 --- a/scripts/build-windows.ps1 +++ b/scripts/build-windows.ps1 @@ -110,7 +110,9 @@ if (-not (Test-Path $frb)) { cargo +stable install flutter_rust_bridge_codegen --version $pins['FRB_VERSION'] --features uuid --locked } Push-Location flutter; flutter pub get; Pop-Location -& $frb --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h +# ffigen (внутри codegen) ищет libclang.dll в дефолтных путях -> явно указываем корень LLVM (S:\dev\LLVM). +$llvmRoot = (Split-Path $env:LIBCLANG_PATH) -replace '\\','/' +& $frb --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h --llvm-path $llvmRoot $frbRc = $LASTEXITCODE # Проверяем ОБЕ стороны: rust + dart (+ freezed). rust-файл создаётся до dart, поэтому одного его мало. $genOk = ($frbRc -eq 0) -and (Test-Path 'src/bridge_generated.rs') -and (Test-Path 'flutter/lib/generated_bridge.dart') -and (Test-Path 'flutter/lib/generated_bridge.freezed.dart')