如何使用rb-appscript将文件添加到Xcode中的目标?

tra*_*ble 24 xcode rb-appscript

我正在尝试使用rb-appscript自动将文件添加到我的Xcode项目中.我对Ruby或Applescript没有多少经验,但是有两个人似乎已经为他们做了这个工作:

https://github.com/gonzoua/xcs/blob/master/xcs.thor

自动将生成的源文件添加到xcode项目

不幸的是,这些都不适合我.我可以让他们将文件添加到组中,但是将文件添加到目标中断.这是最简单的代码,对我不起作用:

require 'rubygems'
require 'appscript'

project_path = 'Users:me:Projects:xcode:project:src:AppScaffold.xcodeproj'
project_name = 'AppScaffold'
group_name = 'Classes'
file_name = 'ApplicationDelegate.m'
target_name = 'AppScaffold'

def lookup(sequence, name)
  sequence.get.each { |item|
    if item.name.get == name
      return item
    end
  }
  raise Exception.new("Couldn't find name '" + name + "' in sequence " + sequence.inspect)
end

app = Appscript.app('Xcode')
app.open(project_path)

project = lookup(app.projects, project_name)
target = lookup(project.targets, target_name)
group = lookup(project.root_group.item_references, group_name)
file = lookup(group.item_references, file_name)

file.add({:to => target})
# I also tried this:
# app.add(file, {:to => target})
Run Code Online (Sandbox Code Playgroud)

这个消息失败了:

/Library/Ruby/Gems/1.8/gems/rb-appscript-0.6.1/lib/appscript.rb:542:in `_send_command': CommandError (Appscript::CommandError)
        OSERROR: -1708
        MESSAGE: Application could not handle this command.
        COMMAND: app("/Developer/Applications/Xcode.app").workspace_documents["project.xcworkspace"].projects["AppScaffold"].root_group.Xcode_3_groups.ID("080E96DDFE201D6D7F000001").Xcode_3_file_references.ID("1D3623250D0F684500981E51").add({:to=>app("/Developer/Applications/Xcode.app").workspace_documents["project.xcworkspace"].projects["AppScaffold"].targets.ID("1D6058900D05DD3D006BFB54")})
    from /Library/Ruby/Gems/1.8/gems/rb-appscript-0.6.1/lib/appscript.rb:642:in `method_missing'
    from add_to_target.rb:28
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的是Xcode 4,但我的项目似乎有"Xcode_3_references".我从头开始创建的项目也是如此; 我不知道为什么.

无论如何,我不知道该怎么做这个错误信息,或者在哪里找到关于此的文档.(我查看了Xcode字典,但对"添加"没什么好说的.)任何建议都会很棒.我没有和rb-appscript结婚,我只是想以编程方式将文件添加到我的项目中.

小智 1

我不能 100% 确定您想要做什么以及您是为 Mac 还是 iOS 构建。因此我不确定我是否能提供很大帮助。如果您只是尝试将文件添加到项目中以便捆绑它们而不是在构建中编译它们,那么您不需要编写此代码。相反,单击左侧面板文件列表顶部的项目,然后在主窗口中单击目标包。这应该会给你一个屏幕,顶部有选项“摘要 - 信息 - 构建设置 - 构建阶段 - 构建规则”。单击构建阶段,然后从下面的列表中选择复制捆绑资源。然后单击此列表底部的 + 号,并选择要在构建过程中复制到捆绑包的文件。

也就是说,如果必须以编程方式添加文件,那么您将需要比我更高级的用户来回答您的问题。不过,考虑一下,我想这取决于文件的类型、从哪里获取文件以及在 iPhone 上执行此操作所需的权限。如果你正在为 OSX 进行构建,那么我就陷入了未知的困境,这个建议可能没有那么有帮助。