24

rb-appscript を使用して Xcode プロジェクトにファイルを自動的に追加しようとしています。私は Ruby や Applescript の経験があまりありませんが、2 人の人がこれをうまく機能させたようです:

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 と結婚していません。プログラムでプロジェクトにファイルを追加したいだけです。

4

2 に答える 2

1

あなたが何をしようとしているのか、Mac 用にビルドしているのか iOS 用にビルドしているのか、私には 100% 確信が持てません。したがって、私が多くの助けになるかどうかはわかりません。ビルドでファイルをコンパイルするのではなく、ファイルをバンドルする目的で単にプロジェクトにファイルを追加しようとしている場合は、これをコーディングする必要はありません。代わりに、左側のパネルのファイル リストの上部にあるプロジェクトをクリックし、メイン ウィンドウでターゲット バンドルをクリックします。これにより、画面の上部に「概要 - 情報 - ビルド設定 - ビルド フェーズ - ビルド ルール」オプションが表示されます。ビルド フェーズをクリックし、下のリストからバンドル リソースのコピーを選択します。次に、このリストの下部にある + 記号をクリックし、ビルド中にバンドルにコピーするファイルを選択します。

とはいえ、ファイルをプログラムで追加する必要がある場合は、私よりも上級のユーザーが質問に答える必要があります。ただし、考えてみると、ファイルの種類、取得元、および iPhone でこれを行うために必要なアクセス許可に依存すると思います。OSX 用にビルドしている場合、私は未知の水の中にいるので、このアドバイスはおそらくあまり役​​に立ちません。

于 2011-08-10T12:19:03.217 に答える
1

そのため、Xcode が AppStore に移行されてからの問題の 1 つは、古いバージョンがそのまま残され、削除されなかったことです。言うまでもなく、バイナリはすべて異なります (llvm と 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 を参照するように「再設定」される可能性があります。これにより、意図した結果が得られる可能性があります。

于 2012-08-14T08:13:11.517 に答える