利用Bazel编译MediaPipe framework
2022-10-30 本文已影响0人
M丶夜未央
编译环境
macOS Monterey 12.6
本地MediaPipe工程目录
(本配置过程建立在MediaPipe所依赖环境完全配置完成的情况下,如果不会配置可以参照之前的文章教程)
如果没有,可以从github上面clone一份到本地。
$ git clone https://github.com/google/mediapipe.git
打包framework的工具为Bazel
- cd到 mediapipe/目录下,执行以下命令
bazel build -c opt –config=ios_arm64 mediapipe/example/ios/handtrackinggpu:HandTrackingGpuApp
该命令会自动读取路径下BUILD文件相关配置
BUILD文件内容.png
其中ios_application是生产iPhone ipa文件的固定写法
- name代表名称
- bundle_id代表项目的标识符,该标识符必须与xcode生存的.mobileprovision文件标识符保持一致,否则不管是打包ipa还是framework都会报错。
- families代表支持设备类型
- infoplists代表plist文件所在位置
更多具体参数含义,请参考bazel相关apple编译规范
命令执行完成后我们会获得如下结果
ipa文件路径.png根据dock里提示的路径 ,我们找到对应的ipa文件,即可安装到手机里进行演示操作了。
编译framework和ipa文件同理,bazel会自动读取BUILD文件内容,根据配置生成对应的文件,所以我们需要做的就是修改BUILD文件内容即可。
BUILD文件内容.png-
依照apple的bazel编译规则,我们指定编译方式为ios_framework,设置好静态库相关依赖,以及需要暴露的.h文件,并设置好需要依赖的Library。
objc_library.png
其中name,需要遵循ios_framework里的deps命名规范。
-
设置好相关配置之后,我们先测试一下framework打包命令,如果没有报错,我们会在生成ipa文件对应的目录下找到生产的.zip文件
image.png -
解压缩后,就可以获得framework文件以及对应的头文件
image.png
至此,静态库打包完成!