Pregunta

Tengo un programa bastante grande escrito en C.Abarca varios archivos y tiene algunas modificaciones para intentar compensar los problemas de la plataforma.Específicamente, tengo archivos de encabezado para diferentes sistemas operativos, arquitecturas y compiladores que definen las macros que utiliza para manejar las cosas.Como ejemplo, el -v flag imprime información de la versión, incluido el nombre del compilador que la creó y el sistema operativo y la arquitectura en la que se creó.Como ejemplo de por qué es importante, el programa puede crear un archivo de código C y, si lo desea, compilarlo, una tarea para la cual simplemente realiza una llamada al sistema a cualquier compilador. él fue construido con.

También es compatible con la biblioteca GNU Readline (o la biblioteca BSD Editline, lo mismo) si se encuentra en su sistema, así como un equivalente sin todas las características agradables de Readline que es ANSI puro si no lo tiene.

La conclusión es que no puedo eliminar ninguno de los bits que dependen de la plataforma, ya que varias funciones dependen en gran medida del sistema operativo/arquitectura/compilador que tenga.También quiero brindar una buena funcionalidad a quienes la tienen.Y quiero que la gente lo descargue e instale con un estándar ./configure, make y make install interfaz.

Actualmente estoy usando un script de shell hecho a mano para configure que crea el Makefile desde cero y determina qué archivos de encabezado incluir según su sistema operativo/arquitectura/compilador.Me gustaría un enfoque más eficiente y me gustaría utilizar un sistema de compilación más estándar usando GNU Autotools.De esa manera sé que lo que hago funcionará en la computadora de otra persona sin tener que andar probándolo en sus computadoras.

Mi pregunta, para aquellos de ustedes que han pasado por todo eso (¡gracias!), es:1) ¿Cómo hago para cambiar de un sistema de compilación casero a GNU Autotools?2) ¿Qué buenos tutoriales existen para empezar a utilizar GNU Autotools?3) ¿Cómo puedo hacer que este sea un proceso relativamente indoloro?

¿Fue útil?

Solución

Primero, puede ejecutar autoscan en el directorio raíz del proyecto. Escaneará el árbol del proyecto y generará configure.scan , mientras intenta detectar características no portátiles. Luego, cámbiele el nombre a configure.ac , edítelo en consecuencia y escriba los archivos Makefile.am .

Le sugiero que busque este proceso (especialmente autoscan ) en el manual de GNU autotools para obtener detalles. Reducirá su esfuerzo, pero al menos no comenzará desde cero con la creación de esos archivos.

Otros consejos

Este enlace es lo que busqué en Google después de leer esta publicación. Respondió a mis preguntas sobre cómo crear el archivo ./configure.

El sistema de construcción GNU

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top