我已经有一个适用于MacOS App的Xcode项目。但是,我想使用Swift Package Manager从Github添加一个Swift框架。
我在项目文件夹中运行了“swift package init”。然后我更新了Package.swift文件。然后我跑了“swift package resolve”。
然而,当我尝试构建时,它仍然没有抱怨这样的模块。
由于我已经有了一个工作项目,如果我运行“swift package generate-xcodeproj”,它会搞乱文件夹结构以及删除故事板。
如何告诉Xcode使用swift包管理器下载到项目中的模块?
谢谢!
答案 0 :(得分:1)
macOS,iOS,tvOS和watchOS在撰写本文时(2017年12月)不支持Swift Package Manger。相反,您必须将包中的文件直接添加到项目中。
我建议您在项目中创建一个Dependencies
组,并在包含名称的下面创建一个组:
然后将文件添加到组中:
如果我添加了文件夹,我无法使其工作,因此如果要维护包的结构,则应将所有文件添加到组中。我可能会以错误的方式做到这一点。
然后,您可以像通常自己编写代码一样访问代码。没有进口。
答案 1 :(得分:1)
在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
// swift-tools-version:4.2
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)运行您的项目并享受:)
答案 2 :(得分:0)
从SPM生成的Xcode项目与应用程序的Xcode项目/工作区不同。
您应该在另一个目录中生成该Xcode项目,例如。 “依赖项”。
然后将其拖动到您的应用程序中,并添加链接的框架。我写了full step-by-step。