# Xcode 缓存 {#xcode-cache}
Tuist 支持 Xcode 的编译缓存,允许团队利用构建系统的缓存功能共享编译工件。
## 设置{#setup}
警告要求
- 图斯特账户和项目
- Xcode 26.0 或更高版本
:::
如果您还没有 Tuist 帐户和项目,可以通过运行来创建:
```bash
tuist init
```
一旦有了引用`fullHandle` 的`Tuist.swift` 文件,就可以通过运行为项目设置缓存:
```bash
tuist setup cache
```
该命令创建一个
[LaunchAgent](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html)
以在启动时运行本地缓存服务,Swift [build system](https://github.com/swiftlang/swift-build)
会使用该服务共享编译工件。此命令需要在本地和 CI 环境中运行一次。
要在 CI 上设置缓存,请确保您已通过
验证。
### 配置 Xcode 构建设置{#configure-xcode-build-settings}
将以下构建设置添加到您的 Xcode 项目中:
```
COMPILATION_CACHE_ENABLE_CACHING = YES
COMPILATION_CACHE_REMOTE_SERVICE_PATH = $HOME/.local/state/tuist/your_org_your_project.sock
COMPILATION_CACHE_ENABLE_PLUGIN = YES
COMPILATION_CACHE_ENABLE_DIAGNOSTIC_REMARKS = YES
```
请注意,`COMPILATION_CACHE_REMOTE_SERVICE_PATH` 和`COMPILATION_CACHE_ENABLE_PLUGIN`
需要添加为**用户自定义的构建设置** ,因为它们没有直接暴露在 Xcode 的构建设置 UI 中:
::: info SOCKET PATH
运行`tuist setup cache` 时将显示套接字路径。它基于项目的完整句柄,下划线替换了斜线。
:::
您也可以在运行`xcodebuild` 时指定这些设置,方法是添加以下标志,如
```
xcodebuild build -project YourProject.xcodeproj -scheme YourScheme \
COMPILATION_CACHE_ENABLE_CACHING=YES \
COMPILATION_CACHE_REMOTE_SERVICE_PATH=$HOME/.local/state/tuist/your_org_your_project.sock \
COMPILATION_CACHE_ENABLE_PLUGIN=YES \
COMPILATION_CACHE_ENABLE_DIAGNOSTIC_REMARKS=YES
```
::: info GENERATED PROJECTS
如果项目由 Tuist 生成,则无需手动设置。
在这种情况下,只需在`Tuist.swift` 文件中添加`enableCaching: true` 即可:
```swift
import ProjectDescription
let tuist = Tuist(
fullHandle: "your-org/your-project",
project: .tuist(
generationOptions: .options(
enableCaching: true
)
)
)
```
:::
### 持续集成 #{continuous-integration}
要在 CI 环境中启用缓存,需要运行与本地环境相同的命令:`tuist setup cache` 。
此外,您还需要确保`TUIST_TOKEN` 环境变量已设置。您可以根据此处的文档
创建一个环境变量。`_ TUIST_TOKEN` 环境变量_必须在构建步骤中存在,但我们建议在整个 CI 工作流程中都设置它。
GitHub 操作的工作流程示例如下:
```yaml
name: Build
env:
TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }}
jobs:
build:
steps:
- # Your set up steps...
- name: Set up Tuist Cache
run: tuist setup cache
- # Your build steps
```