Xcode 位置无法正常工作
Xcode Locations Don't Work Properly
每当我向项目中添加新文件时,都会添加默认位置 "Relative to Group" 和有问题的路径(例如):
../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
我又不是把文件放到别的用户的目录下了。在这种情况下,../myUsername
解析为 .
。与其他所有双点相同。您可以将其简化如下:
../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
../../../../Folder/Foo/Foo/Foo/Bar.swift
../../../Foo/Foo/Foo/Bar.swift
../../Foo/Foo/Bar.swift
../Foo/Bar.swift
Bar.swift
因为它实际上是沿着这条路往下走,然后原路返回。相当于运行 cd ../; cd ~-
中的shell.
我希望路径简单 Bar.swift
。这在使用共享代码时会导致很多问题,因为其他人在不同的地方使用不同的用户名拥有该项目。
到目前为止我找到的唯一解决方案是手动编辑 project.pbxproj
文件。是什么导致了这个问题,我应该如何解决它?
注意:我怀疑这可能与用户名的大小写有关,因为用户名与路径一样远。
编辑:这是截图(红色是我的用户名,绿色是应用名称):
此外,cd
ing 到目录和 运行 realpath ../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
returns Bar.swift
.
编辑 2:我对用户名 case-sensitive 的怀疑是正确的!看看当我将 Location 设置为 Absolute Path
:
时会发生什么
以前,用户名只是标题大小写(../MyUsername
、/Users/MyUsername
等)。然而,现在Xcode似乎去:
- 从小写用户名向下目录树(到组文件夹)...
- 通过包含项目的目录...
- 进入包含文件的目录...
- 备份到用户目录...
- 与 Title case 用户名相同的路径。
我认为这是 Xcode 中的错误。如果我不得不猜测,内部发生的事情是:
- Xcode获取文件的绝对路径
- 添加时从文件选取器
- 通过按“位置”部分中的文件夹图标重新定位时从文件选择器中
- 以某种方式创建新文件(?)
- 此路径使用 Title case 用户名。
- Xcode获取绝对组路径
- 来自它的记录 (project.pbxproj?)
- 出于某种原因,此路径使用小写用户名
- Xcode 试图找出从#1 开始的路径相对于从#2 开始的路径。
- 例如,如果文件路径为
/foo/bar/baz.swift
,组为 /foo
,则预期结果为 bar/baz.swift
。
- Xcode 从组的绝对路径开始(因为结束路径应该是相对于组的)。
- Xcode 查看两条路径并进行比较。
/Users/myusername/Folder/Foo/Foo/Foo
对比 /Users/MyUsername/Folder/Foo/Foo/Foo/Bar.swift
.
- Xcode 看到唯一的区别是:
- 在路径的末尾(一个有文件名,一个没有)
- 在用户名中(myusername vs MyUsername)
- Xcode 使用双点 (
../
) 向上移动到文件树中最远的问题。 /Users/myusername/Folder/Foo/Foo/Foo/../../../../..
,或简单地 /Users
.
- Xcode 再次开始,但这次使用文件绝对路径的剩余部分(Xcode 永远不会回到
/Users
因为它与两条路径)。
- Xcode 一直到文件名,使用 Title case 用户名。
/Users/myusername/Folder/Foo/Foo/Foo/../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
.
当 location 设置为 Relative to Group
时,组的路径是隐含的,因此之前的路径简单地变为:
../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
.
熟悉吗?
无论如何,我该如何解决这个问题?????
事实证明,问题是我将 home directory path 设置为与实际文件夹不同的大小写。
每当我向项目中添加新文件时,都会添加默认位置 "Relative to Group" 和有问题的路径(例如):
../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
我又不是把文件放到别的用户的目录下了。在这种情况下,../myUsername
解析为 .
。与其他所有双点相同。您可以将其简化如下:
../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
../../../../Folder/Foo/Foo/Foo/Bar.swift
../../../Foo/Foo/Foo/Bar.swift
../../Foo/Foo/Bar.swift
../Foo/Bar.swift
Bar.swift
因为它实际上是沿着这条路往下走,然后原路返回。相当于运行 cd ../; cd ~-
中的shell.
我希望路径简单 Bar.swift
。这在使用共享代码时会导致很多问题,因为其他人在不同的地方使用不同的用户名拥有该项目。
到目前为止我找到的唯一解决方案是手动编辑 project.pbxproj
文件。是什么导致了这个问题,我应该如何解决它?
注意:我怀疑这可能与用户名的大小写有关,因为用户名与路径一样远。
编辑:这是截图(红色是我的用户名,绿色是应用名称):
此外,cd
ing 到目录和 运行 realpath ../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
returns Bar.swift
.
编辑 2:我对用户名 case-sensitive 的怀疑是正确的!看看当我将 Location 设置为 Absolute Path
:
以前,用户名只是标题大小写(../MyUsername
、/Users/MyUsername
等)。然而,现在Xcode似乎去:
- 从小写用户名向下目录树(到组文件夹)...
- 通过包含项目的目录...
- 进入包含文件的目录...
- 备份到用户目录...
- 与 Title case 用户名相同的路径。
我认为这是 Xcode 中的错误。如果我不得不猜测,内部发生的事情是:
- Xcode获取文件的绝对路径
- 添加时从文件选取器
- 通过按“位置”部分中的文件夹图标重新定位时从文件选择器中
- 以某种方式创建新文件(?)
- 此路径使用 Title case 用户名。
- Xcode获取绝对组路径
- 来自它的记录 (project.pbxproj?)
- 出于某种原因,此路径使用小写用户名
- Xcode 试图找出从#1 开始的路径相对于从#2 开始的路径。
- 例如,如果文件路径为
/foo/bar/baz.swift
,组为/foo
,则预期结果为bar/baz.swift
。 - Xcode 从组的绝对路径开始(因为结束路径应该是相对于组的)。
- Xcode 查看两条路径并进行比较。
/Users/myusername/Folder/Foo/Foo/Foo
对比/Users/MyUsername/Folder/Foo/Foo/Foo/Bar.swift
. - Xcode 看到唯一的区别是:
- 在路径的末尾(一个有文件名,一个没有)
- 在用户名中(myusername vs MyUsername)
- Xcode 使用双点 (
../
) 向上移动到文件树中最远的问题。/Users/myusername/Folder/Foo/Foo/Foo/../../../../..
,或简单地/Users
. - Xcode 再次开始,但这次使用文件绝对路径的剩余部分(Xcode 永远不会回到
/Users
因为它与两条路径)。 - Xcode 一直到文件名,使用 Title case 用户名。
/Users/myusername/Folder/Foo/Foo/Foo/../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
.
- 例如,如果文件路径为
当 location 设置为 Relative to Group
时,组的路径是隐含的,因此之前的路径简单地变为:
../../../../../MyUsername/Folder/Foo/Foo/Foo/Bar.swift
.
熟悉吗?
无论如何,我该如何解决这个问题?????
事实证明,问题是我将 home directory path 设置为与实际文件夹不同的大小写。