2009-12-11 27 views

risposta

-3

Ecco un esempio di un file marca:

 
.SUFFIXES: .c.o 
CC = cc 
INCLUDE = -I/usr/include -I/usr/sys/include 
# Comment out one or the other, mutually exclusive 
CFLAGS = -g # Debugging info 
#CFLAGS = -O2 # Optimize code 
LIBS = -L/usr/lib -L/usr/sys/lib -lsome_lib1 -lsome_lib2 # Debugging libs 
#LIBS = -L/usr/lib # Release 
FILES = mysource.o myroutines1.o myroutines2.o 
APP = myapp 
.c.o: 
    $(CC) $(INCLUDE) $(CFLAGS) -c $< 

all : $(APP) 

$(APP) : $(FILES) 
    $(CC) -o [email protected] $(FILES) $(LIBS) $(CFLAGS) 

clobber : clean mrproper 

clean: 
    rm -rf $(FILES) 

mrproper: 
    rm -rf $(APP) 

Notate come viene definito il flag CFLAGS. Commentare l'altro a seconda se si sta facendo un debug o rilasciare accumulo ..

Il campione di cui sopra è per un make file dal mio tutorial per la creazione di un eseguibile chiamato myapp che compone di mysource.c, myroutines1.c e myroutines2.c. E mostra come fare è abbastanza intelligente per costruire un eseguibile senza ricompilare.

Nota Il makefile ha orientamento unix/linux ed è molto rigido su schede/spazi che non vengono visualizzati nell'esempio sopra!

Spero che questo aiuti, Cordiali saluti, Tom.

+0

Non capisco perché questo è stato downvoted come l'OP chiaramente affermato in altre parole come definirli in un makefile, questa era la mia comprensione? Correggimi se ho frainteso? – t0mm13b

+5

Io non sono l'OP, e questo è un po 'in ritardo ... ma ... Immagino che l'OP (come me) stia cercando un comando CMake che implementa questa logica nei Makefile generati automaticamente. La modifica manuale dei Makefile non è un'opzione. –

+0

@MattB: Oh ... ho dimenticato di questo ... un po 'troppo tardi !!! So che c'è una GUI di CMake ... non è tanto una risposta, ma più di un punto nella direzione per vedere se c'è un'opzione sulla GUI di CMake per farlo per te e vedere cosa genera ... – t0mm13b

-5

Non sono sicuro di aver capito la domanda, ma ...

Forse si potrebbe usare una macro aggiuntivo per la fornitura della riga di comando flag di compilazione C, ad esempio:

CFLAGS= <whatever> 
CFLAGS2= #nothing 

.c.o: 
    $(CC) $(INCLUDE) $(CFLAGS) $(CFLAGS2) -c $< 

Poi, quando si emettere il comando make, fornire un argomento della riga di comando "CFLAGS2=xxx", che sostituisce l'impostazione predefinita nel makefile.

Aggiornamento

Sì, non ho capito la domanda del PO. Quindi gentilmente disprezzo.

+0

@Loadmaster: ho fatto la stessa cosa qui ma ho downvoted perché non capisco la domanda dell'OP - ha detto 'quando make (non cmake) è eseguito?' ... – t0mm13b

+1

La domanda è su cmake . CMake genera un makefile sulla piattaforma linux, quindi non posso modificarlo direttamente. –

+0

@Lukasz Lew: Ahh ... non c'è da stupirsi ... ho avuto un downvoted ... lol ... – t0mm13b

Problemi correlati