24 votos

¿Cómo añadir archivos a destinos en Xcode con rb appscript?

Estoy tratando de agregar automáticamente los archivos de mi proyecto de Xcode uso de rb-appscript. Yo no tengo mucha experiencia con Ruby o Applescript, pero dos personas que parecen haber hecho este trabajo para ellos:

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

Agregar automáticamente genera los archivos de origen en un proyecto de xcode

Por desgracia, ninguno de estos funciona para mí. Puedo conseguirlos para añadir archivos a los grupos, pero la adición de archivos a los objetivos de los descansos. Aquí es el más simple trozo de código que no funciona para mí:

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})

Este error con este mensaje:

/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

Tenga en cuenta que estoy usando Xcode 4, pero mi proyecto parece haber "Xcode_3_references". Este es también el caso de los proyectos en los que crear desde cero; no estoy seguro de por qué.

De todos modos, no estoy seguro de qué hacer con este mensaje de error, o dónde encontrar documentación sobre esto. (He mirado el Xcode diccionario, pero no tenía mucho que decir acerca de "agregar".) Cualquier consejo sería genial. Yo no estoy casado con rb-appscript, solo quiero añadir archivos a mi proyecto de programación.

1voto

James B. Puntos 105

No estoy 100% seguro de lo que estás tratando de hacer y si usted está construyendo para Mac o para iOS. Por lo tanto, no estoy seguro de si puedo ser de mucha ayuda. Si usted simplemente está tratando de agregar archivos a su proyecto para el bien de los abrigue más que compilar ellos en la construcción, a continuación, usted no necesita este código. En lugar de hacer clic en su proyecto en la parte superior de su lista de archivos en el panel de la izquierda, a continuación, en la ventana principal, haga clic en el destino del paquete. Esto te dará una pantalla con las opciones "resumen - info - configuración de generación - fases de construcción - construir reglas" a lo largo de la parte superior. Haga clic en fases de construcción y, a continuación, seleccione copiar paquete de recursos de la lista de abajo. A continuación, haga clic en el signo + en la parte inferior de esta lista y seleccione el archivo que desea copiar en el paquete durante la compilación.

Dicho esto, si el archivo tiene que ser añadido mediante programación, entonces usted necesita un usuario más avanzado que yo para responder a su pregunta. A pesar de que, al pensar en ello, supongo que depende del tipo de archivo, donde se están recibiendo desde y con los permisos necesarios para hacerlo en el iphone. Si usted está construyendo para el OSX entonces estoy en desconocido de agua y este consejo probablemente no es tan útil.

1voto

FilmJ Puntos 988

Así, uno de los temas con Xcode desde que se trasladó a la AppStore es que las versiones anteriores fueron dejados intactos, y no se quita - por no hablar de los archivos binarios son todos diferentes (llvm vs cc). No era el mismo problema que están teniendo, pero lo hice correr en complicaciones en el uso de los compiladores de línea de comandos para cosas como homebrew, y me encontré con este comando:

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

Ver: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/xcode-select.1.html

Yo no lo sé aquí, pero es posible que esto va a "reorientar" el sistema de generación está trabajando con referencia a la actual xcode y no la versión anterior, que puede tener el resultado deseado.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X