Agregar archivos a través de Applescript a un objetivo de proyecto Xcode

Quiero agregar archivos automáticamente a un proyecto de Xcode que se crea desde cero (a través de otro IDE) como un paso posterior a la compilación. Nuestro proyecto está configurado para llamar a un manuscrito que hace las referencias de archivo apropiadas en el proyecto, pero cada intento de agregar las referencias de archivo al proyecto falla.

El problema principal parece ser este error: Xcode tiene un error: el ID de referencia del archivo "DCDCC17E13819A8E004B4E75" del ID de grupo de Xcode 3 "D82DCFB50E8000A5005D6AD8" del proyecto "TestProject" del documento del espacio de trabajo "project.xcworkspace" no comprende el mensaje de agregar.

en esta línea:

add fileRef to first target of testProject

Donde fileRef es la variable establecida para la referencia de archivo recién creada, y testProject es la variable establecida para el proyecto que contiene fileRef.

Aquí está el código:

on run argv

-- Get the folder containing items to be added to the project
tell application "Finder"
    set thisScript to path to me
    set projectFolder to get folder of thisScript as string
    set sourceFolder to projectFolder & "FilesToAdd:"
end tell

-- Get all the files that will be added to Xcode
tell application "System Events"
    set filesToAddList to the name of every disk item of (sourceFolder as alias)
end tell

tell application "Xcode"
    -- Open the project using posix-style paths
    open ((POSIX path of projectFolder) & "TestProject.xcodeproj")

    -- Give Xcode some time to open the project before we start giving it commands
    delay 1

    set testProject to project "TestProject"
    tell testProject
        set sourceGroup to group "Sources"
        tell sourceGroup
            -- Iterate over all files in the list
            repeat with i in filesToAddList

                set fileName to (contents of i)

                -- Get the file path using Unix-style pathing, since that is the kind that Xcode needs
                set filePath to (POSIX path of sourceFolder) & fileName

                -- Don't add duplicate file references
                if filePath is not in path of file references in sourceGroup then
                    -- Add a new file reference to the project
                    set fileRef to make new file reference with properties {name:fileName, full path:filePath, path type:absolute, path:filePath, file encoding:macos roman}

                    -- Add the file reference to the build target
                    add fileRef to first target of testProject
                end if
            end repeat

        end tell -- end group tell

    end tell -- end project tell

end tell -- end app tell

end run

He buscado otros ejemplos de cómo agregar archivos a los destinos, y parece que esta es la forma más limpia y concisa de hacerlo, y parece haber funcionado para otras personas en el pasado. ¿Hay alguna forma diferente de agregar referencias de archivos a los destinos?

Como referencia, estoy ejecutando OSX 10.6.7 y Xcode 4.0.2.

preguntado el 16 de mayo de 11 a las 18:05

2 Respuestas

Así que le envié un correo electrónico a Apple sobre este problema y resultó ser un error. Envié un informe de error, así que espero que este problema se solucione pronto.

contestado el 27 de mayo de 11 a las 00:05

¿Alguna idea de cómo puedo agregar algunos archivos a un proyecto XCode a través de un script PHP? - Mihai Fratu

Hasta donde yo sé, la única forma de comunicarse mediante programación con XCode es a través de Applescript, ¿tal vez su script PHP pueda invocar algún tipo de Applescript? Pero realmente no sé cómo funciona PHP en absoluto. - Reuben

¿Ha revisado el radar en busca de ese error recientemente? ¿Se ha actualizado el estado? - ThomasW

Acabo de comprobar el error y el estado no se ha actualizado. Supongo que el soporte de AppleScript para XCode está en segundo plano por ahora ... - Reuben

Doh, me gustaría poder hacer esto también. Cualquier otra cosa que no sea jugar en un árbol XML o arrastrar y soltar manualmente referencias sería una mejora ... - conny

Cambia esto:

- Agregue la referencia del archivo al destino de compilación agregue fileRef al primer destino de testProject

A esto:

- Agregue la referencia del archivo al destino de compilación, dígale a la aplicación "Xcode" agregue fileRef al primer destino de testProject end tell

Respondido 04 Abr '12, 23:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.