[Pluto-help] gcc

Antonio Cuni cuni a programmazione.it
Sab 5 Ott 2002 14:03:43 CEST


Il 12:41, venerd́ 4 ottobre 2002, Body ha scritto:
> Salve.
> Dovrei passare al gcc delle opts.Non vorrei passarle globalmente(cioe'
> impostandole come variabili d'ambiente)ma utilizzarle solo x compilare
> 1programma specifico;cambiarle nei makefile e' improponibile,visto che
> stiamo parlando di circa una settantina di questi.Avevo pensato ad un bash
> script che aggiunga le mie custom opts a quelle gia'
> presenti(CFLAGS,CXXFLAGS),ma come fare?Any tips?

farlo in bash e` un inferno, molto meglio usare python per queste cose; il 
programma che trovi in fondo alla mail "processa" il file passato dalla riga 
di comando cercando righe che iniziano con "CCFLAGS" o "CXXFLAGS" e aggiunge 
alla fine di esse le opzioni appropriate (cambia la costante nel sorgente)
Per aggiornare tutti i makefile in automatico potresti usare find:

find ./ -name Makefile -exec ./updateMakefile.py '{}' ';'

ecco il sorgente (ovviamente chmod +x per renderlo eseguibile):

==== updateMakefile.py ===
#!/usr/bin/python
import sys

# metti qua le opzioni nuove. Attento allo spazio iniziale
new_CCFLAGS = " -Wall -O3\n"
new_CXXFLAGS = " -Wall -O3\n"

def update(filename):
    try:
        lines = open(filename).readlines()
        out = open(filename, 'w')
        for line in lines:
            if line.upper().find('CCFLAGS') == 0:
                out.write(line[:-1] + new_CCFLAGS)
            elif line.upper().find('CXXFLAGS') == 0:
                out.write(line[:-1] + new_CXXFLAGS)
            else:
                out.write(line)
        out.close()        
    except IOError, msg:
        sys.stderr.write(str(msg)+'\n')

if __name__ == "__main__":
    if len(sys.argv) != 2:
        sys.stderr.write('Numero di argomenti errato\n')
    else:
        input_file = sys.argv[1]
        update(input_file)

ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra





More information about the pluto-help mailing list