我正在尝试使用rb-appscript自动将文件添加到我的Xcode项目中。我没有太多使用Ruby或Applescript的经验,但似乎有两个人为他们做了这件事:
https://github.com/gonzoua/xcs/blob/master/xcs.thor
Automatically adding generated source files to an xcode project
不幸的是,这两种方法都不适合我。我可以让他们将文件添加到组中,但将文件添加到目标会中断。下面是最简单的一段代码,它不适用于我:
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})此操作失败,并显示以下消息:
/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注意,我使用的是Xcode4,但我的项目似乎有"Xcode_3_references“。这也是我从头开始创建的项目的情况;我不确定为什么。
无论如何,我不知道如何理解这个错误消息,也不知道在哪里可以找到关于这个问题的文档。(我查看了Xcode字典,但它没有太多关于“add”的内容。)任何建议都是很棒的。我不喜欢rb-appscript,我只是想以编程的方式将文件添加到我的项目中。
发布于 2011-08-10 20:19:03
我不是100%确定你想做什么,你是为Mac还是iOS构建的。因此,我不确定我是否能帮上大忙。如果您只是试图将文件添加到您的项目中,以便捆绑它们,而不是在构建中编译它们,那么您不需要对此进行编码。相反,在左侧面板的文件列表顶部单击您的项目,然后在主窗口中单击目标包。这应该会给你一个屏幕,上面有“摘要-信息-构建设置-构建阶段-构建规则”选项。单击构建阶段,然后从下面的列表中选择复制捆绑包资源。然后单击此列表底部的+号,并选择要在构建期间复制到包中的文件。
也就是说,如果文件必须以编程方式添加,那么您将需要一个比我更高级的用户来回答您的问题。不过,仔细想想,我猜这取决于文件的类型,从哪里获得它,以及在iphone上执行此操作所需的权限。如果你是在为OSX构建,那么我就处于未知的境地,这个建议可能没有那么有帮助。
发布于 2012-08-14 16:13:12
所以,自从迁移到AppStore之后,Xcode的一个问题就是老版本没有被删除--更不用说二进制文件都是不同的(llvm和cc)。这与您遇到的问题不同,但我在使用诸如自制软件之类的命令行编译器时确实遇到了问题,并遇到了以下命令:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer请参阅:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/xcode-select.1.html
我在这里不确定,但这可能会“重新定向”您正在使用的构建系统,以引用当前的xcode,而不是旧版本,这可能会产生预期的结果。
https://stackoverflow.com/questions/6685637
复制相似问题