如何自动化XCode项目变更?

问题描述:

我有一个单调乏味的任务,我需要重复每次构建iPhone项目以发送给非程序员同事:我在项目文件夹外引用的所有库和标题都需要复制到项目文件夹或其子文件夹中,所以我可以压缩源代码并将其传递。如何自动化XCode项目变更?

我知道你可以用AppleScript自动化XCode,但是我不能在我的生活中找到任何有关可用命令的正确文档。如果我谷歌XCode AppleScript自动化,我只是在编写Xcode中的AppleScript应用程序的一堆点击。

任何帮助将不胜感激!

根据您的描述,在xcode中创建自定义目标来执行此任务会更容易。 xcode可以运行各种unix工具进行复制,压缩等。soo ... shell脚本应该更容易。你也可以将这个目标设置为一个依赖,如果你愿意的话,所以它总是保持最新状态(但对于常规开发有点缓慢,tbh。

是的,你可以在很多情况下使用applescript和xcode,但是对于你所描述的任务来说,这将会变得更加困难:

+0

Shell脚本适用于复制文件等,但在这种情况下,我也需要更改项目的文件引用,例如,如果项目引用../So meOtherProject/SomeFile.mm,在复制文件后需要变成SomeFile.mm。 – Simplex 2010-09-14 11:20:58

+0

啊 - 好吧,我误解了你原来的帖子的意思。我以为你指的是引用文件,而不是项目引用。好的 - 我们通常不会在交付中经历所有这些繁琐的步骤。在某些情况下,您可以在xcode项目文件本身中使用搜索和替换。如果您只是添加了搜索路径(用于包含内容),或者使用xcode的“源代码树”来更改引用/搜索路径(对于您必须编译的文件),它会更容易。 – justin 2010-09-14 11:32:22

+0

源树很漂亮,不知道那个。但他们并没有解决我的问题。我可以做一个搜索+替换,只是觉得有点哈克。我知道有通过AppleScript操作xcode项目的命令(包括添加/删除引用等),我只是找不到任何文档。 : - /谢谢你的帮助! – Simplex 2010-09-15 11:41:18

这里是一个演示,让你开始使用,因为你知道如何定位字典,其余的可能很简单,如果你喜欢使用AppleScript:

tell application "Xcode" 
    -- of course, use your project's name instead of Alias 
    set projectName to "Alias" 
    set xcProject to project projectName 

    repeat with idx from 1 to the count of (get every file reference of xcProject) 
     set fileRef to (file reference idx) of xcProject 
     get path of fileRef 
     get id of fileRef 
     get name of fileRef 
     get properties of fileRef 

     set newPath to path of fileRef 
     -- add logic and alterations here 
     set path of fileRef to newPath 
     -- ... 
    end repeat 
end tell