Добавление файлов через Applescript к цели проекта Xcode - PullRequest
4 голосов
/ 16 мая 2011

Я хочу автоматически добавлять файлы в проект Xcode, который создается с нуля (через другую IDE) в качестве шага после сборки. Наш проект настроен на вызов appleScript, который делает соответствующие ссылки на файлы в проекте, но каждая попытка добавить ссылки на файлы в проект терпит неудачу.

Основная проблема, похоже, заключается в этой ошибке: Xcode получил ошибку: идентификатор ссылки на файл «DCDCC17E13819A8E004B4E75» идентификатора группы Xcode 3 «D82DCFB50E8000A5005D6AD8» проекта «TestProject» документа рабочего пространства «project.xcworkspace» не понимает сообщение добавления.

в этой строке:

add fileRef to first target of testProject

Где fileRef - переменная, установленная для вновь созданной ссылки на файл, а testProject - переменная, установленная для проекта, содержащего fileRef.

Вот код:

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

Я посмотрел другие примеры добавления файлов к целям, и кажется, что это самый чистый и лаконичный способ сделать это, и, похоже, он работал для других людей в прошлом. Есть ли другой способ, которым ссылки на файлы должны быть добавлены к целям?

Для справки, я использую OSX 10.6.7 и Xcode 4.0.2.

Ответы [ 2 ]

5 голосов
/ 27 мая 2011

Итак, я написал Apple об этой проблеме, и она оказалась ошибкой.Я отправил отчет об ошибке, поэтому, надеюсь, эта проблема будет исправлена ​​в ближайшее время.

1 голос
/ 04 апреля 2012

Измените это:

- добавьте ссылку на файл к цели сборки, добавьте fileRef к первой цели testProject

К этому:

- добавьте ссылку на файлк приложению назначения целевого объекта "Xcode" добавьте fileRef к первому целевому объекту testProject и конец Tell

...