g++ und makefile



  • Hallo,

    ich habe ein Problem mit meiner Makefile.
    Ich möchte *.cpp Dateien die in einem anderen Ordner liegen compilieren und mit anderen Dateien, dich sich in selben ordner wie die makefile befinden linken.

    Die Dateien Makefile , main.cpp und consumer.cpp liegen in einem Verzeichnis.
    In einem anderen Ordner UserDefClasses liegt eine weitere *.cpp Datei die ich linken möchte.

    Hier ein Ausschnitt aus meiner Makefile, mein Problen ist, dass die objects.o Datei zwar erstellt wird, allerdigns in demeselben Ordner in dem die Makefeile liegt.

    Beim linken wird die Datei dann wieder in ../UserDefClasses/ gesucht ?

    CC     = g++
    OPT    = #-O3
    DEBUG  = -g
    OTHER  = #-Wall
    #CFLAGS = $(OPT) $(OTHER)
    CFLAGS = $(DEBUG) $(OTHER)
    
    MODULE = generator
    SRCS = main.cpp Consumer.cpp data_gen.cpp ../UserDefClasses/objects.cpp
    OBJS = $(SRCS:.cpp=.o)
    HDRS = data_gen.h Consumer.h ../UserDefClasses/objects.h
    
    .
    .
    .
    .
    
    SC_USER_DEF_CLASSES = -I ../UserDefClasses/
    
    EXE    = $(MODULE).exe
    
    .SUFFIXES: .cc .cpp .o .x
    
    $(EXE): $(OBJS) $(SYSTEMC)/lib-$(TARGET_ARCH)/libsystemc.a 
    	$(CC) $(CFLAGS) $(SC_USER_DEF_CLASSES) -o $@ $(OBJS) 2>&1 | c++filt
    
    .cpp.o :$(HDRS)
    	@echo $(OBJS)
    	$(CC) $(CFLAGS) $(SC_USER_DEF_CLASSES) -c $<
    
    clean::
    	rm -f $(OBJS) *~ $(EXE) core
    

    weis jemand was ich verändern muss, damit die objedt datei auch in dem unterordner erstellt wrid und nicht im aktuellen verzeichnis ?
    (Oder wie kann ich dem compiler beim linken mitteilen das er den aktuellen Ordner nach nach den *.o Dateien durchsuchen soll ?

    Danke
    chris



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hi,

    habs jetz so gemacht das ich noch -o $(<:.cpp=.o) mit angebe.

    so wird die aktuelle Datei ob zb main.cpp in main.o gespeichert.
    genauso wird die datei ../pfad/datei.cpp in ../pfad/datei.cpp gespsichert und nicht mehr im aktuellern ordner.

    Chris



  • Mach lieber -o $@ . Aber ansonsten schau dir mal die "ultimative Makefile" in der rudpf FAQ an. Vielleicht hilft dir ein Blick darein weiter.


Anmelden zum Antworten