XcodeGen 是一个用 Swift 编写的命令行工具,它使用你的文件夹结构和项目规范来生成你的 Xcode 项目。
项目规范是一个 YAML 或 JSON 文件,用于定义你的 targets、configurations、schemes、自定义构建设置和许多其他选项。你的所有源目录都会被自动解析和引用,同时保留你的文件夹结构。许多地方都使用了合理的默认值,因此你只需要自定义需要的部分。非常复杂的项目也可以使用更高级的功能来定义。
.xcodeproj
,这意味着 不再有合并冲突!给定一个示例项目规范
name: MyProject
include:
- base_spec.yml
options:
bundleIdPrefix: com.myapp
packages:
Yams:
url: https://github.com/jpsim/Yams
from: 2.0.0
targets:
MyApp:
type: application
platform: iOS
deploymentTarget: "10.0"
sources: [MyApp]
settings:
configs:
debug:
CUSTOM_BUILD_SETTING: my_debug_value
release:
CUSTOM_BUILD_SETTING: my_release_value
dependencies:
- target: MyFramework
- carthage: Alamofire
- framework: Vendor/MyFramework.framework
- sdk: Contacts.framework
- sdk: libc++.tbd
- package: Yams
MyFramework:
type: framework
platform: iOS
sources: [MyFramework]
将创建一个项目,其中包含 2 个连接的 targets,以及所有必需的配置和构建设置。请参阅 Project Spec 文档,了解你可以指定的所有选项,以及 Usage 文档,了解更多通用文档。
首先确保已安装 Xcode 11。
mint install yonaskolb/xcodegen
git clone https://github.com/yonaskolb/XcodeGen.git
cd XcodeGen
make install
brew install xcodegen
用作 CLI
git clone https://github.com/yonaskolb/XcodeGen.git
cd XcodeGen
swift run xcodegen
用作依赖项
将以下内容添加到你的 Package.swift 文件的 dependencies 中
.package(url: "https://github.com/yonaskolb/XcodeGen.git", from: "2.35.0"),
然后根据需要在任何地方导入:import XcodeGenKit
只需运行
xcodegen generate
这将在当前目录中查找名为 project.yml
的项目规范,并生成一个以规范中定义的名称命名的 Xcode 项目。
选项
.yml
或 .json
项目规范的可选路径。默认为 project.yml
。(也可以通过逗号分隔链接到多个规范文件。请注意,所有其他标志将保持不变。)xcodegen
,但规范及其包含的所有文件都相同,则不会生成项目。~/.xcodegen/cache/{PROJECT_SPEC_PATH_HASH}
还有其他命令,例如 xcodegen dump
,它可以输出多种不同格式的已解析规范,或将其写入文件。使用 xcodegen help
查看更详细的用法信息。
到 stdout
xcodegen dump --type graphviz
到一个文件
xcodegen dump --type graphviz --file Graph.viz
在实现过程中,使用 GraphvizOnline、WebGraphviz 和 MacOS 上的 Graphviz 验证了 graphviz
格式。
git clone https://github.com/yonaskolb/XcodeGen.git
cd XcodeGen
swift package generate-xcodeproj
这使用 Swift Package Manager 创建一个 xcodeproj
文件,你可以在 Xcode 中打开、编辑和运行它,这使得编辑任何代码都更容易。
如果要在 Xcode 中运行时传递任何必需的参数,你可以编辑 scheme 以包含启动参数。
如果 XcodeGen 不能满足你的需求,请尝试这些优秀的替代方案
此工具由以下项目驱动
此工具的灵感来自
欢迎提交 Pull requests 和 issues。请针对 bugs、功能或文档打开任何 issues 和 PRs。
XcodeGen 在 MIT 许可证下获得许可。有关更多信息,请参阅 LICENSE。