1 个不稳定版本
0.1.0 | 2024 年 4 月 5 日 |
---|
#1847 在 编码
15KB
443 行
用于处理苹果的 .pbxproj 格式的 Rust 包。
安装
在 serde-pbx
上添加依赖项。
[dependencies]
serde-pbx = "0.1"
使用方法
在代码中构建您的 .pbxproj!每次调用 add_object
都会返回新创建的对象的 ID,以便在后续步骤中进行引用。
use serde_pbx::{self, PBXProject, PBXObject, build_settings};
let mut project = PBXProject::default();
// let's add a built file to this project
let main_swift = project.add_object(PBXObject::PBXFileReference {
source_tree: "<group>".to_owned(),
path: "game/main.swift".to_owned(),
explicit_file_type: "sourcecode.swift".to_owned(),
});
let main_swift_build = project.add_object(PBXObject::PBXBuildFile {
file_ref: main_swift,
settings: IndexMap::new(),
});
let source_build = project.add_object(PBXObject::PBXSourcesBuildPhase {
files: vec![main_swift_build],
});
// NB: we have to do lots more stuff in between here - .pbxproj files typically aren't small!
// now, let's finalise this with a project
let debug_project_build = project.add_object(PBXObject::XCBuildConfiguration {
name: "Debug".to_owned(),
build_settings: build_settings([
("SDKROOT", "iphoneos"),
("IPHONEOS_DEPLOYMENT_TARGET", "15.5"),
("ONLY_ACTIVE_ARCH", "YES"),
]),
});
let project_build_configuration_list = project.add_object(PBXObject::XCConfigurationList {
build_configurations: vec![debug_project_build],
});
let project_id = project.add_object(PBXObject::PBXProject {
build_configuration_list: project_build_configuration_list,
targets: vec![target_id],
});
// and then remember to set the root object too!
project.set_root_object(project_id);
let pbx_string = serde_pbx::to_string(&project);
std::fs::write("my_cool_project.xcodeproj/project.pbxproj", pbx_string).expect("failed to write project");
依赖项
~1.1–1.9MB
~37K SLoC