2011-09-26 14 views
7

Ho un grande progetto sulla mia mano (master) che è suddiviso in diversi componenti (liba, b, c, d) per facilitare la costruzione e la manutenzione. Quando si costruisce l'intero pacchetto, tutti i sottocomponenti devono essere costruiti in sequenza e alcuni di questi pacchetti dipendono l'uno dall'altro.Sottodirectory Autoconf con pacchetti secondari che dipendono l'uno dall'altro?

In termini più espliciti, liba è un prerequisito per b, c e d e la presenza di liba viene verificata dallo script di configurazione. Questo controllo è assolutamente necessario per fornire messaggi di errore user-friendly quando si costruisce la distribuzione b da sola. Tuttavia, quando si costruisce il pacchetto principale e tutti i relativi pacchetti secondari, liba viene creato come subtarget. Pertanto, quando configure viene eseguito nella suite master, liba non è ancora installato e il controllo di liba in b non riesce.

Potrei correggere questo problema passando una flag --with-liba = interna o simile allo script configure di b; tuttavia, non ho trovato alcuna documentazione su tale flag-passing per autoconf. Per il momento, ho un lungo makefile personalizzato in master che fa lo stesso di autoconf/automake con le sottodirectory, ma riordina le dipendenze un po 'in modo che invece di (configure liba) => (configure b) => (build liba) => (build b), l'ordine è (configure liba) => (build liba) => (install liba) => (configure b) => (build b).

Qualche idea su come è stato possibile eseguire il refactoring con le sottodirectory autoconf/automake standard?

+0

Gli autotools non sono uno strumento di packaging. Cercare di usarli come tali è doloroso, nella migliore delle ipotesi. Costruisci pacchetti separati. Lascia che apt/yum/pkg/etc gestisca le dipendenze. –

risposta