CMake: navegar por varios compiladores para un solo idioma
CMake se adhiere al principio de asignar un único CMAKE_CXX_COMPILER para todos los archivos fuente C dentro de un Archivo CMakeLists.txt. Este enfoque plantea desafíos al intentar combinar host y compilación cruzada dentro de un único archivo CMakeLists.txt.
El dilema: múltiples compiladores para el mismo idioma
Según la pregunta original, el quid de la cuestión radica en encontrar una solución para utilizar múltiples compiladores para el mismo lenguaje, específicamente C .
El Compromiso: opciones limitadas
Desafortunadamente, el diseño de CMake no se adapta fácilmente a este requisito. CMake mantiene un único conjunto de propiedades del compilador que se aplican a todos los destinos dentro de un archivo CMakeLists.txt. En consecuencia, para emplear varios compiladores, es necesario ejecutar CMake dos veces.
Alternativas: comandos personalizados o archivos separados
Una solución implica el uso de comandos personalizados, esencialmente creando scripts de shell glorificados. Sin embargo, este enfoque se desvía del objetivo deseado.
Una solución más limpia implica separar los procesos de compilación en distintos archivos CMakeLists.txt. Si bien evita la vinculación entre diferentes arquitecturas, elimina la necesidad de código redundante. Para mantener la coherencia, las secciones comunes de los scripts de CMake se pueden extraer en archivos separados e incluirse mediante la función include().
Inconvenientes: desde la comodidad hasta la complejidad
El principal La desventaja de este enfoque es la pérdida de la compilación de un solo comando. Para mitigar esto, se puede crear un script contenedor en un lenguaje de scripting preferido para invocar los comandos CMake necesarios.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3