Подтвердить что ты не робот

Как добавить файлы в целевые объекты в Xcode с помощью rb-appscript?

Я пытаюсь автоматически добавлять файлы в проект Xcode с помощью rb-appscript. У меня нет большого опыта работы с 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})

Это сообщение не выполняется:

/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

Обратите внимание, что я использую Xcode 4, но у моего проекта есть "Xcode_3_references". Это также относится к проектам, которые я создаю с нуля; Я не уверен, почему.

В любом случае, я не уверен, что делать с этим сообщением об ошибке, или где найти документацию по этому вопросу. (Я посмотрел на словарь Xcode, но мне нечего было сказать о "добавлении".) Любые советы были бы замечательными. Я не женат на rb-appscript, я просто хочу добавить файлы в свой проект программно.

4b9b3361

Ответ 1

Я не уверен на 100%, что вы пытаетесь сделать, и строите ли вы для Mac или для iOS. Поэтому я не уверен, могу ли я оказать большую помощь. Если вы просто пытаетесь добавить файлы в свой проект ради их связывания, а не компилировать их в сборке, вам не нужно это кодировать. Вместо этого нажмите на свой проект в верхней части списка файлов на левой панели, затем в главном окне нажмите на свой целевой пакет. Это должно дать вам экран с параметрами "summary - info - build settings" - строить фазы - строить правила "вверху. Нажмите на фазы сборки, а затем выберите ресурсы пакета для копирования из списка ниже. Затем щелкните знак" +" внизу этого списка и выберите файл, который вы хотите скопировать, в комплект во время сборки.

Тем не менее, если файл должен быть добавлен программно, тогда вам понадобится более продвинутый пользователь, чем я, чтобы ответить на ваш вопрос. Хотя, думая об этом, я думаю, это зависит от типа файла, откуда вы его получаете, и от разрешений, необходимых для этого на iphone. Если вы строите для OSX, то я в неизвестной воде, и этот совет, вероятно, не так полезен.

Ответ 2

Итак, одна проблема с Xcode с момента ее перехода в AppStore заключается в том, что старые версии остались нетронутыми и не удалены - не говоря уже о том, что двоичные файлы все разные (llvm vs cc). Это была не та же проблема, что и у вас, но я столкнулся с осложнениями, используя компиляторы командной строки для таких вещей, как homebrew, и наткнулся на эту команду:

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, а не на более старую версию, которая может иметь предполагаемый результат.