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.

¿Cómo puedo consultar el atributo de una regla en Bazel?

Si tengo

cc_binary(
    name = "stooges",
    srcs = [ "larry.cc", "curly.cc", "moe.cc" ],
)

¿existe una consulta de Bazel que devuelva "larry.cc", "curly.cc", "moe.cc"?

En este momento, lo único que se me ocurre es

$ bazel query --output=build //:stooges | perl -nwle 'print $1 if /srcs\s*=\s*\[([^]]*)\]/'
Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, la siguiente consulta de Bazel devolverá las fuentes larry.cc, curly.cc y moe.cc del objetivo stooges de tipo cc_binary:

    bazel query 'attr("name", "stooges", kind("cc_binary", //...)).rule_outputs.srcs' --output label-list
    

    Esto mostrará una lista de archivos fuente en formato de etiqueta. Si deseas obtener las rutas reales de los archivos, puedes usar la función $(location) junto con $(bazel query ...) en un comando de shell. Por ejemplo:

    bazel build $(bazel query 'attr("name", "stooges", kind("cc_binary", //...)).rule_outputs.srcs' --output label-list | xargs -I{} echo $(location {})
    

    Esto construirá el objetivo stooges e imprimirá las rutas completas de los archivos fuente.

Comments are closed.