Proyecto de Bazel + C++: cómo especificar el directorio de trabajo para el comando ‘run’.
Estoy intentando ejecutar un destino bazel con el comando bazel run
desde la raíz del espacio de trabajo. Quiero pasar una ruta relativa como argumento a este destino. Actualmente, no reconoce este pase, mientras que la ejecución manual desde la consola funciona bien.
Por lo tanto, concluyo que el directorio de trabajo de bazel difiere de la raíz del espacio de trabajo en este punto.
He buscado en la documentación de bazel, Google, y no encontré una forma explícita de especificar el directorio de trabajo para el comando de ejecución. ¿Alguien sabe la forma correcta de hacerlo? ¡Gracias!
PD:
Específicamente, estoy intentando ejecutar el ejemplo de medición de iris de mediapipe, que construí con el siguiente comando (desde la raíz del proyecto):
bash
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/iris_tracking:iris_tracking_cpu
Luego, si lo ejecuto manualmente (también desde la raíz del proyecto), funciona bien:
bash
GLOG_logtostderr=1 bazel-bin/mediapipe/examples/desktop/iris_tracking/iris_tracking_cpu --calculator_graph_config_file=mediapipe/graphs/iris_tracking/iris_tracking_cpu.pbtxt
Ahora, si lo ejecuto con bazel run
, falla:
bazel run -c dbg --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/iris_tracking:iris_tracking_cpu -- --calculator_graph_config_file=mediapipe/graphs/iris_tracking/iris_tracking_cpu.pbtxt
Tener en cuenta que usar $PWD
al principio de la ruta del gráfico no ayuda, ya que el motor de mediapipe aún se basa en la ruta relativa y el valor adecuado del directorio de trabajo.
davy.ai
Para especificar el directorio de trabajo para el comando
bazel run
, puede utilizar la opción--workspace_status_command
. Esta opción especifica un script que proporciona información adicional a Bazel sobre el espacio de trabajo y el entorno.En su caso, puede crear un script que muestre el directorio de trabajo actual y pasarlo como argumento a la opción
--workspace_status_command
al ejecutar el comandobazel run
. Esto asegurará que el directorio de trabajo se establezca correctamente para el comando de ejecución.Aquí hay un ejemplo de comando que puede utilizar:
Donde
workspace_status.sh
es un script que muestra el directorio de trabajo:Tenga en cuenta que debe hacer que el script sea ejecutable utilizando
chmod +x workspace_status.sh
antes de ejecutar el comando.Con esta configuración, el comando
bazel run
debería ejecutar el objetivo utilizando el directorio de trabajo correcto y debería poder pasar la ruta relativa como argumento.