Bazel+C++项目:如何为run命令指定执行工作目录
问题根源
bazel run默认执行时的工作目录是目标对应的runfiles目录,而非你执行命令的工作区根目录,所以依赖相对路径寻址的程序会找不到对应资源。
解决方案
直接在bazel run命令中添加--run_under="cd $PWD && "参数,即可将运行工作目录切换为你执行命令时的当前目录,适配你的Mediapipe场景的命令如下:
bazel run -c dbg --define MEDIAPIPE_DISABLE_GPU=1 --run_under="cd $PWD && " mediapipe/examples/desktop/iris_tracking:iris_tracking_cpu -- --calculator_graph_config_file=mediapipe/graphs/iris_tracking/iris_tracking_cpu.pbtxt
注意--run_under是Bazel原生参数,需要放在目标路径之前,不要放到参数分隔符--之后。
这个方案不需要修改任何项目构建配置,直接调整运行参数即可生效,完全满足Mediapipe引擎对相对路径和当前工作目录的依赖要求。
内容的提问来源于stack exchange,提问作者Stepan Dyatkovskiy
相关产品推荐
相关产品推荐

