es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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 comando bazel 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:

    bazel run -c dbg --define MEDIAPIPE_DISABLE_GPU=1 --workspace_status_command=./workspace_status.sh mediapipe/examples/desktop/iris_tracking:iris_tracking_cpu -- --calculator_graph_config_file=mediapipe/graphs/iris_tracking/iris_tracking_cpu.pbtxt
    

    Donde workspace_status.sh es un script que muestra el directorio de trabajo:

    #!/bin/bash
    echo "WORKSPACE_STATUS_COMMAND BEGIN"
    echo "PWD=$(pwd)"
    echo "WORKSPACE_STATUS_COMMAND END"
    

    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.

Comments are closed.