不能在带有 Xcode 11 包管理器的 Swift 包中包含 C 文件
Posted
技术标签:
【中文标题】不能在带有 Xcode 11 包管理器的 Swift 包中包含 C 文件【英文标题】:Can't include C-files in Swift-package with Xcode 11 package manager 【发布时间】:2019-09-27 21:01:11 【问题描述】:我使用 Xcode 11.0 创建了一个 Swift 5.1 应用程序,其中包含 c 文件和 h 文件。 Xcode 自动生成了一个桥接头。 我输入了必要的#imports。 该项目按预期编译和运行。 现在我想创建一个 Swift 包,其中包含 c 文件和头文件、桥接头文件和一个 Swift 文件,它是 c 函数的包装器。 我是通过以下方式做到的。
-
我打开了文件->新建->Swift 包
我填写了包的名称字段和添加到:和组:字段
现在 Package.swift 出现在项目中。
我将 Swift 文件从项目文件夹移到 Package.swift/Sources/packageName 文件夹中。
出于测试原因,我更改为目标/常规窗口并按下框架、库和嵌入内容的 + 按钮。
正如预期的那样,在出现的框架列表中,我可以找到我的包的名称。
我取消了窗口并返回将单个 c 文件移动到包文件夹中。
然后我回到目标/常规窗口并再次按下 + 按钮,现在令人惊讶的是列表不包含我的包名称
在我看来,将 c 文件包含到 Swift 包中需要一些额外的步骤。 我在文档中搜索,但找不到提示。
【问题讨论】:
【参考方案1】:基本上你现在不能在同一个包中混合 C 和 Swift 源代码。
但是,您可以拥有一个包含所有 C 文件的目标,然后拥有一个包含 Swift 文件但取决于您的 C 文件目标的不同目标。
从您的问题来看,您似乎缺少很多中间步骤。如果我是你,我会尝试获取一个仅使用 C 文件的简单示例,然后继续添加依赖于此的 Swift 目标。
【讨论】:
以上是关于不能在带有 Xcode 11 包管理器的 Swift 包中包含 C 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用带有 Spring 的 Gradle 依赖管理插件的分类器的 dependencyManagement 版本?