Agregar automáticamente los files de origen generados a un proyecto xcode

Estoy usando un IDL que genera automáticamente files fuente para mi proyecto xcode. ¿Alguien sabe cómo puedo agregar automáticamente los files generados al proyecto? Actualmente tengo que eliminar los files actuales del proyecto y agregar los nuevos. Esto se pone realmente molesto.

El uso de una reference de carpeta funciona para los files de encabezado, pero xcode no quiere reconocer ningún file en una reference de carpeta como files de origen. ¿Alguien ha encontrado alguna vez una solución a este problema?

También pasé un par de días escribiendo una solución para este problema. Aquí hay un script ruby ​​que puede agregar al objective de su proyecto como una fase de compilation de scripts de ejecución. Esto se probó con XCode 3.2.4 y ruby ​​1.8.7.

Para que esto funcione, necesitará instalar rb-appscript ruby ​​gem. (por ejemplo: sudo gem install rb-appscript)

Hay poca configuration para hacer:

  1. Primero, necesita una list de objectives de compilation para files agregados.
  2. En segundo lugar, espera un nombre de grupo de proyecto que se sincronizará con su carpeta de disco asociada ('objc' en mi caso). Obviamente, este grupo necesita existir y apuntar a una carpeta real.

Aquí está el script:

require 'rubygems' require 'appscript' target_names = ['MinitSample'] # Put your target names here group_name = 'objc' # Name of Xcode project group where to add the generated files project_name = ENV["PROJECT_NAME"] project_dir = ENV["PROJECT_DIR"] xcode = Appscript.app('Xcode') project = xcode.projects[project_name] group = project.groups[group_name] group_path = group.real_path.get generated_files = Dir.glob(group_path+"/*.m") missing_files = Array.new(generated_files) group.item_references.get.each {|item| item_path = item.real_path.get missing_files.delete(item_path) if ! generated_files.include?(item_path) then group.file_references[item.name.get].delete puts "Deleting #{File.basename(item_path)} from group #{group_name}, as it is not in generated files list" end } if missing_files.empty? then puts "There are no new files to add. " exit end # holds the compile targets for generated files targets = [] project.targets.get.each{ |target| targets << target if target_names.include?(target.name.get) } if targets.empty? then puts "Unable to find #{target_names.inspect} in project targets ! Aborting" exit end missing_files.each{ |path| file_name = File.basename(path) msg = "Adding #{file_name} to group #{group_name} and to targets: " item = xcode.make(:new => :file_reference, :at => group.item_references.after, :with_properties => {:full_path => path, :name => file_name}) targets.each {|target| xcode.add(item,{:to=>target}) msg += target.name.get } puts msg } 

Puede encontrar una buena idea aquí: https://stackoverflow.com/a/17894337/354018

Básicamente, importa los files .m generados en un file fuente conocido que se agrega a la fase de compilation.

Agregué un radar (detalles en http://www.openradar.me/radar?id=4885314376040448 ) pidiendo ayuda para esto.

Mira el proyecto xcode-editor , una API para manipular files de proyecto Xcode.

Puede agregar files a un proyecto, especificar a qué destino pertenece, agregar files y frameworks xib.