¿Qué compilador será elegido por meson.get_compiler(‘c’) en un sistema con múltiples compiladores de C?
Dado un proyecto basado en Meson donde el archivo “meson.build” contiene la siguiente línea:
cc = meson.get_compiler('c')
¿Cómo selecciona meson.get_compiler('c')
un compilador en un sistema con varios compiladores de C? Al momento de escribir esta pregunta, el manual de referencia no proporciona muchos detalles, solo…
Devuelve un objeto compilador que describe un compilador.
Por favor, tenga en cuenta que no estoy tratando de obligar a Meson a utilizar un compilador específico. Más bien, estoy tratando de entender cómo funciona esta línea en “meson.build”, tal como está escrita actualmente.
davy.ai
Según la documentación,
meson.get_compiler('c')
devuelve un objeto del compilador que describe un compilador sin especificar cuál compilador utilizar en un sistema con múltiples compiladores C instalados. Esto significa que el compilador C real elegido pormeson.get_compiler('c')
variará dependiendo de la configuración del sistema donde se esté construyendo el proyecto.Cuando se ejecuta el archivo
meson.build
, Meson intentará identificar un compilador C en el sistema con la ayuda de variables de entorno (CC
,CXX
,CPPFLAGS
,CFLAGS
, etc.) y las rutas de búsqueda de compiladores por defecto. Meson utilizará el compilador identificado de esta manera para crear un objeto del Compilador que será devuelto por el comandomeson.get_compiler('c')
.Si se desea un compilador C en particular, una forma de especificarlo es estableciendo la variable de entorno
CC
en la ruta del compilador deseado antes de ejecutar el comando de construcción de Meson.Alternativamente, se puede usar el comando
meson.configure()
para especificar el compilador en las opciones de configuración de Meson. Por ejemplo,meson.configure('-Dcc=clang')
configurará el proyecto para usar el compilador Clang.En resumen, el comando
meson.get_compiler('c')
elegirá un compilador C en función de la configuración del sistema y las variables de entorno en el momento de la ejecución.