Как получить Xcode для репликации структуры группы проектов в структуре папок на диске?

У меня есть проект Xcode со следующей структурой группы:

ProjectName/
    Classes/
        class1.h
        class1.m
        class2.h
        class2.m
        ...
    XMLDocs/
        doc1.xml
        doc2.xml
        ...
    Resources/
        Info.plist
        MainMenu.xib
        ...

и т.д. и т.д.

Я хотел бы, чтобы это было представлено в структуре папок на диске:

ProjectFolder/
    Project.xcodeproj
    Classes/
        class1.h
        class1.m
        class2.h
        class2.m
        ...
    XMLDocs/
        doc1.xml
        doc2.xml
        ...
    Resources/
        Info.plist
        MainMenu.xib
        ...

в отличие от обычного в методологии папки корневого проекта.

Есть ли способ сделать это, не создавая вручную структуру папок на диске, а затем переписывая всю ссылку в Xcode в новое местоположение?

Бонусные баллы, если вы можете сказать мне, как это сделать автоматически, когда я создаю новую группу или добавляю файлы в существующую группу в Xcode.

Ответ 1

В Xcode нет функции "сделать мой диск похожим на структуру моего проекта".

Вы могли бы автоматизировать задачу, используя AppleScript, хотя: вы можете изучить и изменить структуру проекта из script. Таким образом, вам просто нужно написать script, который выполняет итерацию над структурой проекта и делает иерархию папок так, как это делает структура проекта, и настраивать, где Xcode файл и ссылки на группы указывают одновременно.

Ответ 2

Вы можете сделать это в некоторой степени! Есть только один дополнительный шаг, который вы делаете каждый раз, когда вы создаете новую группу (и в первый раз вам предстоит многое сделать!):

Настройка местоположения Xcode

Всякий раз, когда вы создаете группу в Xcode, немедленно выберите ее и откройте правую боковую панель. Обратите внимание на настройку "Местоположение:" чуть ниже ее имени. Щелкните значок папки рядом с "Нет" и установите его в новую папку с тем же именем.

Теперь, всякий раз, когда вы добавляете файлы в группу, они отправляются в соответствующую папку на диске. Woo!

К сожалению, в это начальное время у вас будет много файлов, которые нужно сделать. (По мере изменения групповых путей ваши файлы будут красными, так как Xcode начнет искать их в новой папке. Вам придется вручную перенести их из Finder, чтобы исправить это.) Однако есть команда -line для выполнения этой начальной миграции для вас: https://github.com/venmo/synx

Ответ 3

Ссылка на папку - это то, что вы хотите. При перетаскивании или добавлении файлов в проект есть опция "Создать ссылки на папки для любых добавленных папок". Выберите это, и вы получите нужное поведение.

alt text http://img.skitch.com/20081203-prtxsp7c36ern4afxxdixy93sq.png

Вы можете попробовать добавить всю закрывающую папку проекта в качестве ссылки на папку. Это должно получить все. Или добавьте ссылки для "Классы" "Ресурсы" и "XML" индивидуально.

Ответ 5

Xcode9 решает эту проблему. По умолчанию новая группа создается с соответствующей папкой на диске.