OpenCV SPM 软件包

每次我尝试在 Apple 平台上使用 OpenCV 时,都要花上好几天时间去处理那些无关紧要的琐事,试图编译它并将其包含在我的项目中。构建过程繁琐且耗时,而且根本无法将其转化为 Swift Package。

但现在,人们可以在 SPM 中创建二进制软件包

所以这就是它。

要使用它,只需包含软件包
https://github.com/r0ml/OpenCV.git

构建过程(参见 build.sh)同时启用了 ObjC++ 和 Swift。在您的项目中,您需要将 C++ and Objective-C interoperability 的设置更改为 C++/Objective-C++

构建您自己的版本

如果您希望构建自己的版本,请克隆此仓库 (git clone --recurse-submodules)。
您需要安装 cmake (brew install cmake)。
您需要安装 XCode 命令行工具 (xcode-select --install)。
您需要创建一个名为 python 的 python 版本,并安装在 /usr/local/bin 中。
(构建脚本需要一个名为 python 的可执行文件在 PATH 中。
不幸的是,如果您创建指向 /usr/bin/python3 的链接,它将无法工作!)

我在此仓库中包含了一个名为 python 的脚本,必须将其复制或移动到 /usr/local/bin/python

然后运行

./prepatch.sh

这修复了 opencv 中 #include 语句的问题。

然后运行

./build.sh

因为我使用 OpenCV 作为框架的名称,而不是 opencv2,所以头文件中的许多包含都无法正确解析。以下补丁修复了该问题。

运行

./postpatch.sh

构建的 xcframework 应该位于 build_xcframework/OpenCV.xcframework

部署

构建 xcframework 后,需要

  1. 运行 ./postbuild.sh xxx,其中 xxx 是更新软件包的新版本号。这将更新下载 URL 中的版本号,创建发布 zip 文件,并更新 Package.swift 中的校验和。
  2. 提交并推送更改
  3. 使用 postbuild.sh 步骤中的版本号在 github 上创建一个新版本
  4. OpenCV.framework.zip 从 build_xcframework 上传为发布中的资产

备选方案

如果添加此 SPM 软件包似乎花费的时间太长,您可以尝试使用 https://github.com/r0ml/JustTheBinary 上的备选软件包。这包含一个二进制软件包,其中包含与此处提供的框架相同的框架,除了(顾名思义)它不包含重建框架所需的所有内容。它应该加载更快。

许可证

版权所有 (c) 1868 Charles Babbage
由 r0ml 在他的遗物中发现