2009-02-01 8 views
5

Tengo un programa bastante grande escrito en C. Abarca varios archivos y tiene un poco de reorganización para intentar compensar los problemas de la plataforma. Específicamente, tengo archivos de cabecera para diferentes sistemas operativos, arquitecturas y compiladores que definen las macros que utiliza para manejar cosas. Como ejemplo, el indicador -v imprime información de versión, incluido el nombre del compilador que la creó y el sistema operativo y la arquitectura en la que se creó. Como un 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 que simplemente hace una llamada al sistema al compilador con el que se construyó.Cómo reconfigurar un programa grande para GNU Autotools

También tiene soporte para 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 Readline que es puro ANSI si no lo hace t lo tengo.

La conclusión es que no puedo extraer ninguno de los bits dependientes de la plataforma, ya que varias funciones dependen bastante de qué OS/arquitectura/compilador tenga. También quiero proporcionar una buena funcionalidad a quienes lo tienen. Y quiero que las personas lo descarguen e instalen con una interfaz estándar ./configure, make y make install.

Actualmente estoy usando un script de shell hecho apesadumbrado para configure que crea el Makefile desde cero, y determina qué archivos de cabecera incluir en función de su OS/architecture/compiler. 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 forma sé que lo que haga funcionará en la computadora de otra persona sin tener que ir a probarlo en sus computadoras.

Mi pregunta, para aquellos de ustedes que han recorrido todo eso (¡gracias!), Es: 1) ¿Cómo hago para pasar de un sistema de compilación casero a GNU Autotools? 2) ¿Qué buenos tutoriales hay para comenzar con GNU Autotools? 3) ¿Cómo puedo hacer esto un proceso relativamente indoloro?

Respuesta

8

En primer lugar, puede ejecutar autoscan en el directorio raíz del proyecto. Escaneará el árbol del proyecto y generará configure.scan, mientras intenta detectar funciones no portátiles. A continuación, cambie el nombre a configure.ac, edítelo según corresponda y escriba Makefile.am archivos.

Le sugiero que busque este proceso (especialmente autoscan) en el manual GNU autotools para más detalles. Reduzcará su esfuerzo, pero al menos no comenzará de cero al crear esos archivos.

1

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.

The GNU Build System

Cuestiones relacionadas