嘿,我经常将我的 XCode iPhone 项目上传到 svn 存储库,以便在另一台机器上构建。
我的问题是,当我向项目添加资源时,有时我会忘记添加相对于项目的资源。
我知道一个答案是要更加小心(当你累了时不容易!)但是如果有一种方法可以运行脚本来检查我的资源路径是相对的,并且在我构建时警告我,这将是一个很好的时间为我节省。
我该怎么做呢?
谢谢
克里斯
嘿,我经常将我的 XCode iPhone 项目上传到 svn 存储库,以便在另一台机器上构建。
我的问题是,当我向项目添加资源时,有时我会忘记添加相对于项目的资源。
我知道一个答案是要更加小心(当你累了时不容易!)但是如果有一种方法可以运行脚本来检查我的资源路径是相对的,并且在我构建时警告我,这将是一个很好的时间为我节省。
我该怎么做呢?
谢谢
克里斯
您可以选择项目中的所有文件并一次性设置所有文件的路径类型。虽然这不是一个脚本,但这确实比单独处理文件节省了大量时间
我认为编写脚本的最佳方法是查看 .xcodeproj 文件 - 文件路径在其中列出。如果您的项目名为 MyProject,您需要打开(通过在 Finder 中使用 Show Package Contents 或在终端中使用通常的 cd)MyProject.xcodeproj 目录。
在这里,您会找到一个名为 project.pbxproj 的文件 - 在不会弄乱您的格式的编辑器中打开它并查看文件。如果您在项目中搜索您的文件之一,您应该能够看到 Xcode 如何存储对项目文件的引用。
查找名为 /* Begin PBXFileReference section */ 的部分。在这里列出了所有文件,以及它们相对于项目的位置,例如:
... path = Classes/MyClass.h; sourceTree = SOURCE_ROOT
如果您可以解析此文件,您应该能够实现您想要的 - 但请记住备份该文件,否则您可能会损坏您的项目。
如果您改为编写一个脚本,询问 SCM 项目中是否有任何内容未提交,那会怎样?例如,想想这个场景
Project Root
Codex
Project.xcodeproj
…
Design
anImage.png
anImage.png
Xcode项目所在Codex
的位置(其路径以 开头../
)。强大的.pbxproj
解析器必须支持 Xcode 引用文件的所有变体,才能准确知道是否存在杂散文件。
OTOH,SCM 一直都知道一切在哪里(您提到了对 SVN 服务器的 up-ping),所以为什么不问它呢。