不能在带有 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 文件的主要内容,如果未能解决你的问题,请参考以下文章

带有身份检查器的自定义 Xcode 选择器

如何使用带有 Spring 的 Gradle 依赖管理插件的分类器的 dependencyManagement 版本?

composer 包管理器的安装和使用

新立得软件包管理器的介绍

带有安全管理器的 Swing 应用程序导致奇怪的 GUI 刷新问题

带有 WPF 的 Aero 玻璃框架上类似于 Windows 资源管理器的搜索框