- 原文: Source Layouts
- 译者: chai2010
在Swift包管理工具中,swift build
构建命令根据文件系统中Sources目录的源代码的布局来创建目标模块。
例如,Swift源文件有以下目录布局结构:
example/
example/Sources/bar.swift
example/Sources/baz.swift
在example
目录运行swift build
命令将生成一个静态库目标:example/.build/debug/example.a
。
如果要生成多个目标文件,则需要在Sources目录中创建多个子目录:
example/Sources/foo/foo.swift
example/Sources/bar/bar.swift
运行swift build
构建命令将生成两个静态库目标:
example/.build/debug/foo.a
example/.build/debug/bar.a
要生成一个可执行的模块(而不是库),需要在模块代码所在目录添加一个main.swift
文件:
example/Sources/foo/main.swift
example/Sources/bar/bar.swift
现在运行swift build
命令将生成一个可执行程序:
example/.build/debug/foo
example/.build/debug/bar.a
其中foo
是一个可执行程序,bar.a
是一个静态库。
其它规则
- 如果模块中有名为
Tests
的目录,将被当作测试模块,在运行swift test
测试的时候使用。在Manifest文件中(Package.swift
文件),可以通过配置忽略Tests
目录或任意的子目录。也可以针对测试目标单独配置依赖关系,方法和普通目标类似。 - 如果含有名为
Sources
、Source
、srcs
或src
的子目录,当前目录将被当作模块处理。 - 如果是单一的模块,并且代码都放在根目录的话,没有
Sources
子目录也是可以接受的(通样适用于子目录模块)。对于简单的工程,可以用这种简单的布局规则。