2016-09-29 74 views
4

从swift包管理器生成时是否可以在Xcode中维护组结构层次结构?我每次运行:Swift包管理器在维护组结构的同时生​​成Xcode项目

swift package generate-xcodeproj 

我失去了任何组合(没有文件夹,这工作正常)结构我有。我经常喜欢在编码时在代码中使用代码不可见的某种级别的视觉组织(即组与文件夹相对)。

+1

是不是有理由在组结构中没有使用相同的文件系统结构作为文件? –

+0

是的,举个简单的例子,想象一下为以下对象创建一系列包含类的单独文件:Bird,Fish,Human,所有这些文件都在独立的Living文件中引用超类。然后,您可以组织他们: 文件:生活, 组:种 - >文件:鸟 - >文件:鱼 - >文件:人类, 如果物种是一个文件夹,这不会与SPM –

回答

2

我相信,你想要的是组织你的源代码如下所示(基于跟进评论):

Foo/Package.swift Foo/Sources/Foo/Living.swift Foo/Sources/Foo/Specifies/Bird.swift Foo/Sources/Foo/Specifies/Fish.swift Foo/Sources/Foo/Specifies/Human.swift

注意的是,这里最重要的一点是,如果你想使用的子目录,你必须确保你的代码全部嵌套在Sources之内。这是一个包声明多个目标时使用的约定,如果要为源使用嵌套,则需要该约定。请参阅参考文献中的source layouts部分。

如果您使用此布局,那么使用最新的Swift包管理器(可通过swift.org获取),生成的Xcode项目将具有我认为您想要的组结构。

这是我们现在知道的混淆,我们正在评估如何最好地改善事情。

+0

如果我的工作做这个,然后在'swift package generate-xcodeproj'之后的Xcode中,然后我得到你所说的,但是它们没有被分解成组。这些文件都在同一级别,但现在被命名为:'指定/ Bird.swift'等,而不是在组中指定' –

+0

这是SwiftPM相对最近修复的东西 - 为了获得这种行为,你可以将需要从http://swift.org获取最新的工具链之一 –