出于某种原因,当我尝试在swift build
文件上运行Package.swift
时:导入PackageDescription
let package = Package(
name: "mobile-HDISegurado-ios",
dependencies: [
.package(url: "https://github.com/watson-developer-cloud/swift-sdk", from: "0.30.0"),
],
targets: [
.target(
name: "mobile-HDISegurado-ios",
dependencies: ["WatsonDeveloperCloud"],
path: "mobile-HDISegurado-ios",
exclude: [
"Config",
"Public",
"Resources",
]
)
] )
我遇到以下错误:
错误:定位于 '... / mobile-HDISegurado-ios' 包含混合语言源文件;功能不支持
更多详细信息:
答案 0 :(得分:2)
您是否正在使用SPM构建iOS项目?目前,SPM不支持iOS。不过,有一个第三方工具可以填补这一空白:https://swiftxcode.github.io/
如果要为其他版本构建,则不能将Swift文件和其他C族语言文件混合在一起。我遇到了同样的问题,因为目标路径中只有一个Objective-C文件。我所做的就是将文件名包含在exclude
数组中。
因此,如果在mobile-HDISegurado-ios
参数内传递文件名,请确保忽略“-exclude
”中的Objective-C类。
答案 1 :(得分:2)
另外,如果您在Objective-C项目或工作区中添加了Swift文件,但是后来又删除了所有Swift文件,则Xcode仍会在“构建设置”下保留一些条目。检查Swift相关选项,如以下行所示:
如果删除这些选项,Xcode将不再显示错误,可以安全地安装Package。
经过测试:
最好。
答案 2 :(得分:0)
SPM 现在支持混合语言源文件,但您可能需要将它们分成多个目标。
<块引用>目标可以包含 Swift、Objective-C/C++ 或 C/C++ 代码,但单个目标不能将 Swift 与 C 系列语言混合。例如,一个 Swift 包可以有两个目标,一个包含 Objective-C、Objective-C++ 和 C 代码,另一个包含 Swift 代码。
在实践中,您应该将 ObjC/C/C++ 文件移动到一个目录中,将 Swift 文件移动到另一个目录中,然后修改您的 Package.swift 如下:
products: [
.library(
name: "MyLibrary",
targets: ["MyLibrary"]),
],
.target(name: "MyLibraryObjC",
path: "Sources/MyLibraryObjC"
),
.target(name: "MyLibrarySwift",
path: "Sources/MyLibrarySwift"
)