2009-12-11 11 views

Antwort

-3

ist ein Beispiel für eine Make-Datei:

 
.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) 

Beachten Sie, wie das Flag CFLAGS definiert ist. Kommentieren Sie die anderen je nachdem, ob Sie eine Debug tun oder Build Release ..

Das obige Beispiel ist für eine Make-Datei von meinem Tutorial zum Erstellen einer ausführbaren Datei namens myapp, die komponiert von mysource.c, myroutines1.c und myroutines2.c. Und es zeigt, wie make intelligent genug ist, um eine ausführbare Datei ohne Neukompilierung zu erstellen.

Hinweis Das Makefile hat eine Unix/Linux-Ausrichtung und ist sehr streng auf Tabs/Leerzeichen, die im obigen Beispiel nicht angezeigt werden!

Hoffen, dass dies hilft, Mit freundlichen Grüßen, Tom.

+0

Sie nicht verstehen, warum dies als OP Downvoted wurde eindeutig erklärt mit anderen Worten, wie man sie in einem Makefile definiert, das war mein Verständnis? Korrigiere mich, wenn ich falsch verstanden habe? – t0mm13b

+5

Ich bin nicht das OP, und das ist ein wenig spät ... aber ... Ich stelle mir vor, dass das OP (wie ich) einen CMake-Befehl sucht, der diese Logik in den automatisch generierten Makefiles implementiert. Das manuelle Bearbeiten von Makefiles ist keine Option. –

+0

@MattB: Oh ... hab das vergessen ... ein bisschen zu spät !!! Ich weiß, dass es eine CMake-GUI gibt. Es ist nicht viel von einer Antwort, aber mehr von einem Punkt in der Richtung zu sehen, ob es eine Option auf der CMake-GUI gibt, um das für Sie zu tun und zu sehen, was es erzeugt ... – t0mm13b

-5

Ich bin nicht sicher, ich verstehe die Frage, aber ...

Vielleicht könnten Sie ein zusätzliches Makro für die Bereitstellung von Flags Befehlszeile C-Compiler verwenden, zB:

CFLAGS= <whatever> 
CFLAGS2= #nothing 

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

Dann, wenn Sie Geben Sie den Befehl make ein, und geben Sie ein "CFLAGS2=xxx" Befehlszeilenargument an, das die Standardeinstellung im Makefile überschreibt.

aktualisieren

Ja, ich verstehe nicht die Frage des OP. Also bitte ignorieren.

+0

@Loadmaster: Ich habe das gleiche hier gemacht, aber wurde downvoted, da ich die Frage des OP nicht verstehe - er hat gesagt 'wenn make (nicht cmake) ausgeführt wird?' ... – t0mm13b

+1

Die Frage ist über cmake . CMake erzeugt ein Makefile auf der Linux-Plattform, so dass ich es nicht direkt modifizieren kann. –

+0

@Lukasz Lew: Ahh .... kein Wunder ... Ich wurde downvoted ... lol ... – t0mm13b

Verwandte Themen