确实,目前Bazel不能直接构建iOS mediapipe示例程序。然而,你可以通过手动设置一些配置来解决这个问题。下面是一个示例的解决方法:
首先,你需要下载mediapipe的源码。可以通过以下命令从GitHub上克隆mediapipe的仓库:
git clone https://github.com/google/mediapipe.git
接下来,进入mediapipe的根目录,然后找到mediapipe/examples/ios
目录。在该目录下,你会看到一个名为BUILD
的文件,这是Bazel构建系统的配置文件。
打开BUILD
文件,找到以下行:
##! #import("//mediapipe/examples/ios:ios_framework.bzl", "create_ios_framework")
##! #create_ios_framework()
将其替换为以下内容:
objc_library(
name = "mediapipe_ios",
srcs = glob(["**/*.mm"]),
hdrs = glob(["**/*.h"]),
copts = [
"-fobjc-arc",
"-std=c++17",
"-fmodules",
"-fmodules-cache-path=/tmp/mediapipe",
],
deps = [
"//mediapipe/examples/ios:mediapipe_framework",
],
visibility = ["//visibility:public"],
)
objc_library(
name = "mediapipe_framework",
srcs = glob(["**/*.mm"]),
hdrs = glob(["**/*.h"]),
copts = [
"-fobjc-arc",
"-std=c++17",
"-fmodules",
"-fmodules-cache-path=/tmp/mediapipe",
],
deps = [
"//mediapipe/objc",
],
visibility = ["//visibility:public"],
)
objc_framework(
name = "mediapipe.framework",
hdrs = glob(["**/*.h"]),
module_map = "mediapipe/module.modulemap",
deps = [
":mediapipe_ios",
],
visibility = ["//visibility:public"],
)
保存文件后,回到mediapipe的根目录,并运行以下命令构建iOS示例程序:
bazel build -c opt --copt=-O3 --copt=-fobjc-arc mediapipe/examples/ios:mediapipe_demo_app
这将构建一个名为mediapipe_demo_app
的二进制文件,你可以在bazel-bin/mediapipe/examples/ios
目录中找到它。
请注意,由于Bazel无法直接构建iOS应用程序包(.ipa文件),你需要使用Xcode将生成的二进制文件构建为可安装的iOS应用程序。
希望这个解决方法可以帮助你构建iOS mediapipe示例程序!