SwiftPM 编译命令参数

Aug 30, 2022 • 预计阅读时间 2 分钟

SwfitPM 全称是 Swift Package Manager ,是 Swift 的包管理工具。

SwiftPM 的 manifest 文件是 Package.swift,在编译源码之前需要先编译这个 manifest 文件,然后再执行它进行源码构建。

SwiftPM 的编译命令是 swift build,默认情况下是编译 debug 模式,release 模式需要增加参数:swift build -c release

要对 manifest 文件的增加编译参数,命令是:swift build -Xmanifest -use-ld=lld

Swift 源文件是使用 swiftc 进行编译,要进行一些额外优化的话,需要 -Xswiftc ${argmuent} 来传递参数。

例如 swiftc -static-stdlib -Xfrontend -enable-copy-propagation 在 SwiftPM 中要这样传递:

swift build -c release \
            -Xswiftc -static-stdlib \
            -Xswiftc -Xfrontend \
            -Xswiftc -enable-copy-propagation

传递给 swiftc 的每个参数都要用 -Xswiftc 来分隔,并且参数的顺序要和原来一样。

在 Linux 系统上,如果要使用 LLVM 的 lld 作为链接器,因为 SwiftPM 没有传递全局参数的方法,所以需要这样传递参数:

swift build -c release \
            -Xmanifest -use-ld=lld \
            -Xswiftc -use-ld=lld \
            -Xswiftc -static-stdlib \
            -Xswiftc -Xfrontend \
            -Xswiftc -enable-copy-propagation

也可以把参数写在一个 json 文件里,这样可以增强可读性和可维护性:swift build --destination /path/to/your/config.json

具体的例子参考官方的:https://github.com/apple/swift-package-manager/blob/main/Utilities/build_ubuntu_cross_compilation_toolchain

因为 SwiftPM 是支持多平台的,在每个平台上默认输出的路径不一样,如果想知道构建后的输出目录,需要使用参数 --show-bin-path

swift build -c release --show-bin-path

参考资料

https://github.com/apple/swift-package-manager/blob/main/Documentation/Usage.md#additional-flags

Swift
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

MacPorts 使用 Git 替代 Rsync 同步源

C++ 17: 结构化绑定(Structured Binding)