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.

Paquete de Bazel: ¿Cómo exportar los artefactos de compilación a otro directorio con dependencia externa?

Soy nuevo en Bazel. Tengo un proyecto que está construido con Bazel. También usa algunas bibliotecas de terceros que también se construyen con bazel (desde el código fuente).

Ahora estoy tratando de exportar mi proyecto como una biblioteca independiente para otros. Puedo compilar mi proyecto como un archivo so y copiar los archivos hpp relacionados a un directorio.

Pero no sé cómo lidiar con las bibliotecas de terceros. ¿Hay alguna forma elegante de hacer esto? ¿O algún ejemplo al que pueda referirme?

Mi objetivo es:

  1. Compilar el proyecto como un archivo so. Copiarlo a un directorio específico. (HECHO)
  2. Copiar todos los archivos de encabezado con la estructura de árbol. (HECHO).
  3. Copiar todas las bibliotecas externas también al directorio especificado (NECESITO AYUDA).
  4. Copiar los archivos de encabezado de las bibliotecas externas al mismo directorio de encabezado (NECESITO AYUDA).

Salida:
– include/
– nombre_de_mi_biblioteca/
– nombre_de_terceros_1/
– nombre_de_terceros_2/

  • biblioteca/
    • libnombre_de_mi_biblioteca.so
    • libnombre_de_terceros_1.so
    • libnombre_de_terceros_2.so
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para exportar un proyecto Bazel con bibliotecas de terceros, debes especificar las dependencias y crear un script que copie los archivos necesarios al directorio de salida deseado.

    Suponiendo que ya has compilado tu proyecto como un archivo de objeto compartido y copiado los archivos de encabezado relacionados, puedes seguir los siguientes pasos para copiar las bibliotecas de terceros y sus archivos de encabezado:

    1. Identifica las bibliotecas de terceros de las que tu proyecto depende en los archivos BUILD de Bazel. Puedes encontrar las bibliotecas en el atributo deps de los objetivos correspondientes. Por ejemplo, si estás utilizando una biblioteca llamada third_party_name1 y se crea usando Bazel, puedes encontrarla bajo el atributo deps del objetivo que la utiliza.
    2. En tu script, crea una estructura de directorios como se muestra en el resultado anterior. Puedes utilizar el comando mkdir para crear los directorios necesarios.

    mkdir -p include/my_library_name
    mkdir -p include/third_party_name1
    mkdir -p include/third_party_name2
    mkdir -p library
    
    1. Copia las bibliotecas de terceros al directorio library. Puedes utilizar el comando cp para copiar los archivos de objeto compartido.
    cp /ruta/a/third_party_name1.so library/
    cp /ruta/a/third_party_name2.so library/
    
    1. Copia los archivos de encabezado de las bibliotecas de terceros al directorio correspondiente bajo include. Puedes utilizar el comando cp con la opción -r para copiar todo el árbol de directorios.
    cp -r /ruta/a/third_party_name1/include/* include/third_party_name1/
    cp -r /ruta/a/third_party_name2/include/* include/third_party_name2/
    

    Ten en cuenta que las rutas en los comandos anteriores pueden variar según donde se encuentren las bibliotecas de terceros en tu sistema.

    Una vez que hayas creado la estructura de directorios necesaria y copiado los archivos requeridos, puedes empaquetar el directorio como un archivo ZIP o un archivo de archivo y compartirlo con otros.

Comments are closed.