2019年实现Swift Package Manager和XCode集成的步骤:
1)创建Dependencies.swift文件
/yourproject/Dependencies/Sources/Dependencies.swift
(empty file)
2) 创建 macos.xcconfig 文件
/yourproject/Dependencies/Sources/macos.xcconfig
MACOSX_DEPLOYMENT_TARGET = 10.14
3) 创建 Package.swift 文件
/yourproject/Dependencies/Package.swift
import PackageDescription
let package = Package(
name: "Dependencies",
products: [
.library(name: "Dependencies", type: .static, targets: ["Dependencies"])
],
dependencies: [
.package(url: "https://github.com/YourDependency/here.git", .upToNextMinor(from: "0.1.0"))
],
targets: [
.target(name: "Dependencies", dependencies: ["YourDependency"])
]
)
4)生成 Dependencies.xcodeproj 并将其拖放到您现有的项目中。
swift package generate-xcodeproj --xcconfig-overrides Sources/macos.xcconfig
5) 导入你的依赖项
import YourDependency
这已经足够让它工作,但您可以通过几个额外步骤使生活更轻松。
额外(可选)步骤:
6)创建ios.xcconfig文件
/yourproject/Dependencies/Sources/ios.xcconfig
SDKROOT = iphoneos
SUPPORTED_PLATFORMS = iphonesimulator iphoneos
IPHONEOS_DEPLOYMENT_TARGET = 10.0
ARCHS = $(ARCHS_STANDARD)
VALID_ARCHS = $(ARCHS_STANDARD)
VALIDATE_PRODUCT = YES
LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks
TARGETED_DEVICE_FAMILY = 1, 2
7) 在您的主项目的iOS和macOS方案中添加预构建操作
iOS
echo "Building SPM Dependencies"
BASE_DIR="${PROJECT_DIR}/Dependencies"
cd ${BASE_DIR}
rm -fr Dependencies.xcodeproj
swift package update
swift package generate-xcodeproj --xcconfig-overrides Sources/ios.xcconfig
sleep 3
until [ -d "Dependencies.xcodeproj" ]
do
echo "File not found"
sleep 0.1
done
echo "File found"
exit
macOS
echo "Building SPM Dependencies"
BASE_DIR="${PROJECT_DIR}/Dependencies"
cd ${BASE_DIR}
rm -fr Dependencies.xcodeproj
swift package update
swift package generate-xcodeproj --xcconfig-overrides Sources/macos.xcconfig
sleep 3
until [ -d "Dependencies.xcodeproj" ]
do
echo "File not found"
sleep 0.1
done
echo "File found"
exit
8) 运行您的项目并享受 :)