每次我尝试在 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 后,需要
./postbuild.sh xxx
,其中 xxx 是更新软件包的新版本号。这将更新下载 URL 中的版本号,创建发布 zip 文件,并更新 Package.swift 中的校验和。postbuild.sh
步骤中的版本号在 github 上创建一个新版本OpenCV.framework.zip
从 build_xcframework 上传为发布中的资产如果添加此 SPM 软件包似乎花费的时间太长,您可以尝试使用 https://github.com/r0ml/JustTheBinary
上的备选软件包。这包含一个二进制软件包,其中包含与此处提供的框架相同的框架,除了(顾名思义)它不包含重建框架所需的所有内容。它应该加载更快。
版权所有 (c) 1868 Charles Babbage
由 r0ml 在他的遗物中发现