gpt4 book ai didi

objective-c - Xcode - 如何通过命令行更改文件的目标成员身份?

转载 作者:搜寻专家 更新时间:2023-10-30 20:13:47 25 4
gpt4 key购买 nike

有没有办法通过命令行更改文件在 Xcode 项目中的目标成员资格?

这是我试图通过 Xcode 的 UI 执行的操作:

target membership

最佳答案

我也必须为 CI 做这件事。经过大量挖掘,我认为这种情况还不足以让任何人编写工具来帮助完成这项工作。

我得出的唯一结论是直接编辑 project.pbxproj 文件,这绝不是一件好事。在我找到 this stackoverflow answer on editing the project.pbxproj file 之前,声称可以执行此操作的所有工具都没有任何帮助。 .本质上,您可以使用 plutil -convert json project.pbxproj 将 project.pbxproj 文件转换为 JSON 格式,并使用 JSON 操作工具将这些文件制作为 header ,然后将它们指向任何目标的 header 你会喜欢。

将 project.pbxproj 转换为 JSON 格式时,请注意 Xcode 将无法再向您显示该项目的项目导航器。但是,它仍然会构建并运行,所以这只有在您计划在构建之前执行此操作(例如 CI)时才真正有用。

(编辑:截至 2022 年 7 月,Xcode 现在将正确读取其 .pbxproj 的 JSON 版本,以允许您在项目导航器中查看您的文件。我不确定哪个版本引入了这个,但至少现在可以使用更高版本的 Xcode。)

JSON 格式的 project.pbxproj 几乎包含“对象”键下的所有重要数据。您想要作为标题的文件已经有一个条目,其键为 the UUID for the file以及可用于将 UUID 与文件相关联的路径值。这是该格式的示例:

   // UUID for your file
"65TYSSDXHSLP4UUOAD9D40C322AAGHM9": {
"path": "MyHeader.h", // Your file's name
"isa": "PBXFileReference",
"includeInIndex": "1",
"lastKnownFileType": "sourcecode.c.h",
"sourceTree": "<group>"
}

还有一个条目将此文件声明为 header ,它有自己的 UUID 和对文件 UUID 的引用:

    // UUID for your file as a header
"YU3BSD39O9PT5RESDFV741D1": {
"isa": "PBXBuildFile",
"fileRef": "65TYSSDXHSLP4UUOAD9D40C322AAGHM9", // UUID for your file MyHeader.h
"settings": {
"ATTRIBUTES": [
"Public" // could also be Project or Private
]
}
}

最后,您的目标有一个头文件列表,您希望头文件引用的 UUID 位于其中。

    "A82GAE9A5HUIO063IOPQAAQIUFGSNXZ": {
"isa": "PBXHeadersBuildPhase",
"buildActionMask": "2147483647",
"files": [
"YU3BSD39O9PT5RESDFV741D1" // UUID for your file as a header
],
"runOnlyForDeploymentPostprocessing": "0"
}

同样,直接更改 project.pbxproj 文件从来都不是一个好主意,但除非有更好的工具可以在不使用 Xcode 的情况下进行这些更改,否则这是我能找到的最好的工具。如果其他人知道我不知道的事情,请告诉我。

关于objective-c - Xcode - 如何通过命令行更改文件的目标成员身份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52948110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com