问题标签 [swift-package-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
235 浏览

swift - Swift 包管理器(“Swift Build”)在 xcode 中编译得很好

当尝试通过包管理器安装模板时,它抱怨我的项目中的一些现有源文件导入模块 libxml2。

尽管该库已正确链接并且在 xcode 中可以正常编译。

有人可以解释我做错了什么吗?

下面是我的控制台输出

链接到我的 debug.yaml 运行的输出

0 投票
2 回答
8160 浏览

ios - Xcode:缺少必需的模块错误

我已经查看了类似问题的答案,但我仍然感到困惑。

背景

我有一个项目正在运行,但我正在尝试在 Xcode 8.3.1 中重新创建它。我首先使用带有一个依赖项的 Swift 包管理器:[.Package(url: " https://github.com/OpenKitten/MongoKitten.git ", majorVersion: 3)]。然后我按照我的笔记从 Cocoa 转换到 iOS(因为 SPM 不直接支持 iOS),这在以前的项目开始时工作:

  1. 制作启动 Package.swift 文件
  2. swift包生成-xcodeproj
  3. 在 Xcode 中打开项目
  4. 项目:构建设置:基础 SDK ==> 更改为 IOS
  5. 编辑器:添加目标:(iOS ...单视图应用程序)
  6. 选择您的项目,查看目标列表,找到您新添加的目标:常规:部署信息
  7. 在工具栏上,更改“活动方案”

一切似乎都很好,我的项目包括 MongoKitten 和它所依赖的一堆其他框架。其中之一称为“CLibreSSL”。我将所有框架作为目标添加到我新创建的目标中。

错误信息

我可以“导入 MongoKitten”到我的视图控制器中(使用自动完成功能)。但是,当我编译时,我收到此错误消息(即使我个人没有尝试导入 CLibreSSL):

不能“导入 CLibreSSL”到我的视图控制器中(没有自动完成识别)。我注意到,当我转到与 MongoKitten 相关的源文件时,它们确实在其导入语句中成功识别了 CLibreSSL。我什至可以删除它们并通过成功的自动完成重新输入。

问题

我意识到当我像我一样创建一个新目标时,我可能需要做一些额外的事情,这可能与搜索路径有关,但我尝试了很多东西,结果没有改变。有人可以告诉我如何解决这个问题(并且请不要假设我有太多的知识,因为我觉得这些东西令人困惑)?

如果您需要更多信息,请告诉我。谢谢

0 投票
1 回答
608 浏览

swift - 如何使用 Swift 包管理器确定 Swift 代码中的配置

我正在使用 Swift 包管理器创建一个应用程序,我需要知道构建项目的配置,即DebugRelease. 我试图远离使用该.xcodeproj文件。请有人让我知道这是否可能。我将在下面粘贴一个简单的示例,但只知道除了下面的代码之外是否还有更好的处理配置的方法,请作为答案提交。

例子:

0 投票
1 回答
1119 浏览

swift3 - Swift Package Manager,添加本地依赖

在一个蒸汽项目中,我的文件夹结构如下:

在每个模块中添加 2 个模块后,我将 package.swift 文件编辑为以下内容:

导入 2 个本地模块工作正常,但是当我尝试使用其中包含的任何函数/对象时,我得到一个“未解决的标识符错误”

有什么我想念的吗?

0 投票
1 回答
1256 浏览

swift - Swift 包管理器 - 如何使用它

我有一个项目,我想在我的应用程序中使用这个包。我用谷歌搜索并按照说明进行操作:

然后我打开package.swift文件并更改为:

然后Terminal

然后我得到了这个错误:

错误:包的布局不受支持,发现意外的源文件:/Users/xuanxi/SGLMath/.build/checkouts/Math.git-9167533630816302265/Tests/EqualWithAccuracy.swift, /Users/xuanxi/SGLMath/.build /checkouts/Math.git-9167533630816302265/Tests/FunctionsTests.swift, /Users/xuanxi/SGLMath/.build/checkouts/Math.git-9167533630816302265/Tests/Matrix2x2Tests.swift, /Users/xuanxi/SGLMath/.build/checkouts /Math.git-9167533630816302265/Tests/Matrix3x3Tests.swift, /Users/xuanxi/SGLMath/.build/checkouts/Math.git-9167533630816302265/Tests/Matrix4x4Tests.swift, /Users/xuanxi/SGLMath/.build/checkouts/Math .git-9167533630816302265/Tests/SwizzleTests.swift, /Users/xuanxi/SGLMath/.build/checkouts/Math.git-9167533630816302265/Tests/Vector2Tests.swift, /Users/xuanxi/SGLMath/.build/checkouts/Math.git -9167533630816302265/Tests/Vector4Tests。迅速,/Users/xuanxi/SGLMath/.build/checkouts/Math.git-9167533630816302265/Tests/glmMatrixTests.swift

修复:在模块内移动文件

我该如何解决这个问题?

  1. 如果我想将此包添加到我现有的Xcode项目中怎么办?
0 投票
1 回答
1015 浏览

swift - swift package generate-xcodeproj 后维护Xcode Run Script Phase

我的 Xcode 项目中有一个运行脚本阶段。在我通过 SPM 更新我的依赖项后,swift package update我必须使用swift package generate-xcodeproj.

如果不使用 ruby​​gem、pod 规范或其他第 3 部分工具,我该如何维护该构建阶段?我可以以某种方式将运行脚本阶段添加到 xcconfig 文件吗?

0 投票
1 回答
437 浏览

swift - 项目之间的共享代码作为没有仓库的库?

我有两个 Swift PM 项目,它们都使用一些我想存储在单独项目中的通用代码,比如一个库,然后这两个可以导入。

我已经使用 swift init --type 库等来构建一个库,但是是否有任何其他记录方式可以将其包含在其他项目中,而无需将其提交到 github 并将 repo 的链接提供给 swift 包管理器?

我正在考虑构建库项目的思路,并有一个脚本将其复制粘贴到其他项目需要访问的地方(如果需要,可以在他们自己的目录中)

0 投票
1 回答
641 浏览

swift - 使用 Swift 包管理器时出错

我正在关注在 Swift 中使用 OpenGL 的教程。它显然依赖于 GLFW 的一些 GitHub Repo,并使用 Package.swift 文件将其构建到您的可执行文件中。可悲的是,在运行指示的构建命令时,swift build -Xcc -I/usr/local/include -Xlinker -L/usr/local/lib我收到以下错误:

错误:不再支持空清单文件。用于swift package init自动生成。

当我运行建议的 init 命令时,我得到:

错误:此目录中已存在清单文件

我应该怎么办?

0 投票
0 回答
611 浏览

c++ - 如何将 c++ 包装到 Objective-c 中并将其链接到 swift 包?

希望可以有人帮帮我。我正在尝试为 Swift 包管理器构建 swift 包。我想在其中包含一些 C++ 源代码,并利用 OOP 的所有优点对其进行操作。所以我创建了新包并添加了三个模块:一个用于在包中快速执行(“swift-exec”),第二个用于我的 c++ lib(“cppLib”),第三个用于 c++ lib(“cwrapper”)的objective-c包装器.

包装说明:

我的 C++ 库:

cpplib.cpp:

cpplib.h:

我的包装:

包装器.h

包装器。毫米

我的迅速执行:

main.swift :

当我在 Xcode 中构建我的项目时,我没有错误,我的项目成功构建、链接和运行。但是当我尝试使用命令“ swift build ”构建包时,出现错误:

所以我的问题是:有可能做我想做的事吗?将 c++ 包装到 objc 并将其链接到 swift 包?

如果是,我做错了什么?

更新:经过一些研究,我发现当 Xcode 尝试链接 .mm 文件时,它使用命令

但是当我尝试在控制台中执行此操作时,“swift build”会使用它:

0 投票
1 回答
463 浏览

swift - 用于开发的 Swift 包管理器

问题:有没有办法用 SPM 创建一个“开发包”,类似于可可豆荚中的开发豆荚,让我可以更改依赖包的实际源项目(本地路径)?

背景:我正在做一个需要分成三个独立项目的项目。其中一个项目由另外两个共享(在本例中为数据模型,由服务器和客户端共享)。对于客户端,因为它使用 uikit,所以我有一个开发 cocoa pod 设置,让我可以在客户端工作区中工作,对数据模型项目进行编辑,然后立即编译和运行。然后将我对数据模型的更改保存在数据模型项目中。

但是,对于服务器,由于它完全是用 SPM 构建的,如果我想对数据模型项目进行编辑(我想反映给客户端),我目前必须在数据模型项目中进行,然后用新的次要版本号重新标记它,清理服务器项目并重建。我很想像使用可可豆一样进行设置。

如果我不能这样做,是否至少有一种方法可以告诉 SPM 仅将我的一个依赖项更新为新版本号(或 Package.swift 中指定的最大版本。即 0.4 的次要版本,所以如果我从 .401 重新标记到 .402 它会更新)?我原以为我可以在 Package.pins 中做到这一点,但这似乎不起作用。如果编辑它不会影响实际更改,不知道为什么它不是隐藏文件。