Builder - 构建工具
builder crate 负责跨平台编译和部署 GDExtension。
职责
- 编译 gdextension 为动态库
- 复制产物到 Godot 项目
- 生成 .gdextension 配置文件
- 处理跨平台路径
使用方法
cargo run -p builder
构建流程
1. 检测当前平台
2. 编译 gdextension (release)
3. 复制动态库到目标目录
4. 生成 .gdextension 文件
实现示例
fn main() -> Result<()> { let target_dir = detect_platform_target()?; // 编译 gdextension println!("Building gdextension..."); let status = Command::new("cargo") .args(&["build", "-p", "gdextension", "--release"]) .status()?; if !status.success() { return Err("Build failed".into()); } // 复制产物 let lib_name = get_lib_name(); let src = format!("target/release/{}", lib_name); let dst = format!("launcher/godot/addons/rusty_core/bin/{}/{}", target_dir, lib_name); fs::copy(&src, &dst)?; println!("Copied {} -> {}", src, dst); // 生成配置 generate_gdextension_file()?; Ok(()) } fn get_lib_name() -> &'static str { if cfg!(target_os = "windows") { "gdextension.dll" } else if cfg!(target_os = "macos") { "libgdextension.dylib" } else { "libgdextension.so" } }
产物结构
launcher/godot/addons/rusty_core/
rusty_core.gdextension # 配置文件
bin/
windows/
libgdextension.dll
linux/
libgdextension.so
macos/
libgdextension.dylib
android/
arm64-v8a/
libgdextension.so
.gdextension 配置
[configuration]
entry_symbol = "gdext_rust_init"
compatibility_minimum = 4.2
[libraries]
windows.debug.x86_64 = "res://addons/rusty_core/bin/windows/libgdextension.dll"
windows.release.x86_64 = "res://addons/rusty_core/bin/windows/libgdextension.dll"
linux.debug.x86_64 = "res://addons/rusty_core/bin/linux/libgdextension.so"
linux.release.x86_64 = "res://addons/rusty_core/bin/linux/libgdextension.so"
macos.debug = "res://addons/rusty_core/bin/macos/libgdextension.dylib"
macos.release = "res://addons/rusty_core/bin/macos/libgdextension.dylib"
跨平台构建
Windows → Android
# 安装目标
rustup target add aarch64-linux-android
# 配置 NDK 路径
export ANDROID_NDK_HOME=/path/to/ndk
# 构建
cargo build -p gdextension --target aarch64-linux-android --release
交叉编译
# Linux → Windows
cargo build -p gdextension --target x86_64-pc-windows-gnu --release
# macOS → iOS
cargo build -p gdextension --target aarch64-apple-ios --release