2009-02-01 14 views
5

Ho un programma abbastanza grande scritto in C. Si estende su diversi file e ha un po 'di riattrezzamento per tentare di compensare i problemi della piattaforma. Nello specifico, ho i file di intestazione per diversi SO, architetture e compilatori che definiscono le macro che usa per gestire le cose. Ad esempio, il flag -v stampa informazioni sulla versione, incluso il nome del compilatore che lo ha generato, e il sistema operativo e l'architettura su cui è stato costruito. Come esempio del perché è importante, il programma può creare un file di codice C e, se lo desideri, compilarlo - un compito per il quale fa semplicemente una chiamata di sistema a qualsiasi compilatore con il quale è stato creato.Come riconfigurare un programma di grandi dimensioni per GNU Autotools

Ha anche il supporto per la libreria GNU Readline (o la libreria BSD Editline - stessa cosa) se è presente nel sistema, così come un equivalente senza tutte le funzioni di Readline che è puro ANSI se non si ce l'ho.

La linea di fondo è che non riesco a rimuovere nessuno dei bit dipendenti dalla piattaforma, poiché diverse funzioni dipendono in maniera piuttosto pesante da quale OS/architettura/compilatore si dispone. Voglio anche fornire una buona funzionalità a chi ce l'ha. E voglio che le persone lo scarichino e lo installino con un'interfaccia standard ./configure, make e make install.

Attualmente sto usando uno script shell scusato per lo configure che crea il Makefile da zero e determina quali file di intestazione includere in base al proprio OS/architettura/compilatore. Mi piacerebbe un approccio più efficiente e mi piacerebbe utilizzare un sistema di build più standard usando GNU Autotools. In questo modo so che quello che faccio funzionerà sul computer di qualcun altro senza dover andare in giro a testarlo sui loro computer.

La mia domanda, per quelli di voi che hanno sfondato tutto ciò (grazie!), È: 1) Come faccio a passare da un sistema di compilazione homebrew a GNU Autotools? 2) Quali buone esercitazioni ci sono per iniziare con GNU Autotools? 3) Come posso rendere questo un processo relativamente indolore?

risposta

8

Per prima cosa, è possibile eseguire scansione automatica nella directory principale del progetto. Analizzerà l'albero del progetto e genererà configure.scan, durante il tentativo di rilevare funzionalità non portatili. Quindi lo si rinomina in configure.ac, lo si modifica di conseguenza e si scrive file Makefile.am.

Suggerisco di cercare questo processo (in particolare scansione automatica) nel manuale di autotools GNU per i dettagli. Ridurrà i tuoi sforzi, ma almeno non inizierai da zero con la creazione di quei file.

1

Questo collegamento è quello che ho cercato su google dopo aver letto questo post. Ha risposto alle mie domande su come creare il file ./configure.

The GNU Build System

Problemi correlati