Местоположения XCode не работают должным образом

Каждый раз, когда я добавляю новый файл в проект, он добавляется с местоположением по умолчанию "Относительно группы" и проблемным путем (например):

../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift

Я не помещаю файл в каталог другого пользователя. В этом случае, ../myUsername решает в ., То же самое с любой двойной точкой. Вы можете упростить это следующим образом:

  1. ../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
  2. ../../../../Folder/Foo/Foo/Foo/Bar.swift
  3. ../../../Foo/Foo/Foo/Bar.swift
  4. ../../Foo/Foo/Bar.swift
  5. ../Foo/Bar.swift
  6. Bar.swift

Потому что он буквально идет по пути, а затем идет по тому же пути. Это эквивалентно бегу cd ../; cd ~- в оболочке.

Я ожидал, что путь будет просто Bar.swift, Это вызывает много проблем при использовании общего кода, потому что другие люди имеют проект в разных местах с разными именами пользователей.

Единственное решение, которое я нашел, - это ручное редактирование project.pbxproj файл. Что вызывает эту проблему и что я должен сделать, чтобы исправить это?

Примечание: я подозреваю, что это может иметь какое-то отношение к случаю имени пользователя из-за того, что имя пользователя задано так же далеко, как и путь.

РЕДАКТИРОВАТЬ: Вот снимок экрана (красный - мое имя пользователя, а зеленый - имя приложения):

Снимок экрана: путь, описанный выше, и реальный путь (<code>cd</code>в каталог и работает <code>realpath ../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift</code> возвращается <code>Bar.swift</code>,</p><p><strong>РЕДАКТИРОВАТЬ 2</strong>: Мои подозрения были правы о том, что имя пользователя с учетом регистра! Посмотрите, что происходит, когда я устанавливаю местоположение в <code>Absolute Path</code>:</p><p> <a href=Строчные, нижнее дерево, прописные.  Полный путь прописными буквами

Раньше имя пользователя было только заглавным регистром (../MyUsername, /Users/MyUsername, так далее.). Тем не менее, теперь XCode, кажется, идет:

  1. Вниз по дереву каталогов от имени пользователя в нижнем регистре (до папки группы)...
    1. Прошлый каталог, содержащий проект...
    2. В каталог, содержащий файл...
  2. Резервное копирование в каталог пользователей...
  3. Вниз по тому же пути с именем пользователя регистра.

Я думаю, что это ошибка в Xcode. Если бы мне пришлось угадывать, что происходит внутри:

  1. Xcode получает абсолютный путь к файлу
    • Из средства выбора файлов при добавлении
    • Из средства выбора файлов при перемещении, нажав значок папки в разделе "Расположение"
    • Как-то от создания нового файла (?)
  2. Этот путь использует имя пользователя для регистра.
  3. Xcode получает абсолютный групповой путь
    • Из его записей (project.pbxproj?)
  4. По какой-то причине этот путь использует имя пользователя в нижнем регистре
  5. Xcode пытается выяснить путь от #1 относительно пути от #2.
    1. Например, если путь к файлу был /foo/bar/baz.swift и группа была /foo, ожидаемый результат bar/baz.swift,
    2. Xcode начинается с абсолютного пути к группе (потому что конечный путь должен быть относительно группы).
    3. Xcode смотрит на оба пути и сравнивает их. /Users/myusername/Folder/Foo/Foo/Foo против /Users/MyUsername/Folder/Foo/Foo/Foo/Bar.swift,
    4. XCode видит, что единственные различия:
      • В конце пути (один имеет имя файла, а другой нет)
      • В имени пользователя (myusername vs MyUsername)
    5. XCode перемещается к самой дальнейшей проблеме вверх по дереву файлов, используя двойную точку (../). /Users/myusername/Folder/Foo/Foo/Foo/../../../../.. или просто /Users,
    6. XCode запускается снова, но на этот раз использует оставшуюся часть абсолютного пути к файлу (XCode никогда не возвращается к /Users потому что это одинаково для обоих путей).
    7. Xcode продолжает весь путь до имени файла, используя имя пользователя Case title. /Users/myusername/Folder/Foo/Foo/Foo/../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift,

Когда местоположение установлено на Relative to Group, путь к группе подразумевается, поэтому предыдущий путь просто становится:

../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift,

Знакомый?


В любом случае, как мне это исправить?????

0 ответов

Оказывается, проблема была в том, что у меня был путь к домашней директории с заглавными буквами, отличными от фактической папки.

Другие вопросы по тегам