从一份 YAML 到完整工程:XcodeGen 完整指南,3步跑通 从一份 YAML 到完整工程XcodeGen 完整指南3步跑通【免费下载链接】XcodeGenA Swift command line tool for generating your Xcode project项目地址: https://gitcode.com/GitHub_Trending/xc/XcodeGen还在 Xcode 里手动拖文件或者团队协作者动不动就在.xcodeproj上打架XcodeGen 就是干这个事的——一个用 YAML 配置文件自动生成 Xcode 工程的命令行工具。它到底在解决什么合并冲突消失.xcodeproj从 git 里移除工程现场生成配置才是唯一事实来源。目录结构自动同步Xcode 里的分组和文件始终跟随磁盘目录你拷贝、移动文件夹后不用回 Xcode 补引用。配置人类可读target、依赖、构建设置全写在 YAML 里review 和 diff 都比工程文件友好。CI 上也能生成本地跑的那条命令在构建流水线里同样能跑不需要提交工程文件给所有人用。从零跑通2分钟装好 XcodeGen 并生成第一个工程macOS 上最短的路是 Homebrewbrew install xcodegen想跟最新代码或自己改东西就克隆源码装一下git clone https://gitcode.com/GitHub_Trending/xc/XcodeGen cd XcodeGen make install然后在项目根目录建一个project.yml这就是 XcodeGen 的唯一输入name: MyProject options: bundleIdPrefix: com.example targets: MyApp: type: application platform: iOS deploymentTarget: 15.0 sources: [MyApp]在这个目录里跑一下xcodegen generate。执行完旁边就多了MyProject.xcodeproj用 Xcode 打开MyApp/目录下的文件已经按子目录分好组、建好引用不需要你再动任何东西。配置体系拆解4 个配置块覆盖日常项目项目名与全局选项name决定生成的工程文件名options放所有 target 的公共设置避免每个 target 重复写name: MyProject options: bundleIdPrefix: com.example deploymentTarget: iOS: 15.0target 没显式写 bundle ID 时会按com.example.目标名拼出来部署版本也按这里统一取值。target 定义type 加 platform 决定产物targets下一个条目就是一个 targettargets: MyApp: type: application platform: iOS sources: [MyApp] MyFramework: type: framework platform: iOS sources: [MyFramework]sources是目录列表Swift、资源、storyboard 都会被递归扫描加入项目里的分组和磁盘结构一一对应。依赖声明target、包、Carthage 混着写依赖直接写在 target 内部项目内 target、SPM 包、Carthage 可以共存packages: Yams: url: https://github.com/jpsim/Yams from: 2.0.0 targets: MyApp: dependencies: - target: MyFramework - package: Yams - carthage: AlamofireSPM 包先在项目级packages里声明target 里按名字引用。Carthage 的链接、嵌入和copy-frameworks构建阶段都会自动生成你只写框架名就行细节看 Usage 文档的 Dependencies 部分。构建设置base 和 configs 两层settings分base所有配置通用和configs按 Debug/Release 区分targets: MyApp: settings: base: DEVELOPMENT_TEAM: ABC123 configs: Debug: DEBUG_MODE: YES多个 target 要复用同一批设置时用settingGroups集中定义再按名字引用想改用.xcconfig文件管理的话走configFiles字段即可用法在 Configuring build settings 一节。一个完整场景应用加框架加测试的三 target 配置name: MyApp options: bundleIdPrefix: com.example packages: Yams: url: https://github.com/jpsim/Yams from: 2.0.0 targets: MyApp: type: application platform: iOS sources: [Sources/MyApp] dependencies: - target: MyFramework - carthage: Alamofire - package: Yams MyFramework: type: framework platform: iOS sources: [Sources/MyFramework] MyAppTests: type: bundle.unit-test platform: iOS sources: [Tests/MyAppTests] dependencies: - target: MyApp这份配置生成三个互相关联的 target应用依赖项目内框架同时链接 Alamofire 和 Yams测试 target 直连应用。跑一次xcodegen generateXcode 里直接能选中测试 target 跑用例不用手动配 target 依赖关系。踩坑与速查使用 XcodeGen 的 4 个高频问题Q已有 Xcode 工程怎么迁移 用xcodegen dump --project MyProject.xcodeproj --spec project.yml把现有工程导出成配置文件再基于它改。前期可以保留.xcodeproj在 git 里过渡稳定后再移除。Q切换分支后文件有增删工程没更新重新跑xcodegen generate --use-cache。缓存机制会让配置没变化时跳过生成。把它放进 git 的post-checkout、post-merge钩子里就一劳永逸。QCI 怎么接构建脚本里加两步装 XcodeGen再xcodegen generate然后照旧xcodebuild。工程文件不需要进仓库每条流水线现场生成。Q.xcodeproj还能留在 git 里吗可以只是享受不到免冲突的红利。代码签名、CocoaPods、Crashlytics 这些场景 FAQ 都有覆盖见 Docs/FAQ.md。下一步跑通第一个工程后把 ProjectSpec 文档 通读一遍配置文件的每个字段都讲在里面。碰到配置不满足需求的地方直接去仓库提 issue。【免费下载链接】XcodeGenA Swift command line tool for generating your Xcode project项目地址: https://gitcode.com/GitHub_Trending/xc/XcodeGen创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考