# 多平台构建指南
Taitank Rust 支持多个平台的构建和部署。
## 支持的平台
- **macOS** (x86_64, arm64)
- **Linux** (x86_64, arm64)
- **Android** (arm64-v8a, armeabi-v7a, x86, x86_64)
- **iOS** (arm64, x86_64 simulator)
- **WebAssembly** (浏览器和 Node.js)
- **Windows** (x86_64, MSVC)
## 构建方法
### macOS
```bash
cargo build --release
# 或使用构建脚本
./build.sh macos release
```
### Linux
```bash
cargo build --release --target x86_64-unknown-linux-gnu
# 或使用构建脚本
./build.sh linux release
```
### Android
#### 前置要求
1. 安装 Android NDK
2. 配置 Rust Android 工具链
```bash
# 安装 Android 目标
rustup target add aarch64-linux-android
rustup target add armv7-linux-androideabi
rustup target add i686-linux-android
rustup target add x86_64-linux-android
# 构建
./build.sh android release
```
#### 在 Android 项目中使用
1. 将生成的 `.so` 文件复制到 `app/src/main/jniLibs/`
2. 在 `build.gradle` 中配置:
```gradle
android {
defaultConfig {
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
}
}
}
```
### iOS
#### 前置要求
1. 安装 Xcode
2. 配置 Rust iOS 工具链
```bash
# 安装 iOS 目标
rustup target add aarch64-apple-ios
rustup target add x86_64-apple-ios
rustup target add aarch64-apple-ios-sim
# 构建
./build.sh ios release
```
#### 在 iOS 项目中使用
1. 创建 Xcode Framework
2. 将生成的库文件添加到 Xcode 项目
3. 在 `Podfile` 中配置(如果使用 CocoaPods)
### WebAssembly
#### 前置要求
```bash
# 安装 wasm-pack
cargo install wasm-pack
# 安装 wasm32 target
rustup target add wasm32-unknown-unknown
```
#### 构建
```bash
cd wasm
wasm-pack build --target web --out-dir pkg
```
#### 使用
```html
<script type="module">
import init, { Node } from './pkg/taitank_wasm.js';
await init();
</script>
```
### C FFI
#### 构建
```bash
cd ffi
cargo build --release
```
#### 使用
```c
#include "taitank.h"
TaitankNodeRef root = taitank_node_create();
taitank_set_width(root, 500.0f);
taitank_do_layout(root, VALUE_UNDEFINED, VALUE_UNDEFINED, DIRECTION_LTR);
```
## 交叉编译配置
项目包含 `.cargo/config.toml` 配置文件,用于设置交叉编译工具链。
## 持续集成
项目支持在 CI/CD 中自动构建多个平台:
- GitHub Actions
- GitLab CI
- CircleCI
示例 CI 配置请参考 `.github/workflows/` 目录。