Anzeige:
Ergebnis 1 bis 2 von 2

Thema: *cpp Dateien in verschiedenen ordnern probleme mit makefile

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74

    *cpp Dateien in verschiedenen ordnern probleme mit makefile

    Hallo,
    ich habe mein Problem mit meiner Makefile.
    Meine ordner struktr sieht so aus :

    prj/testoderner1/test1.h
    prj/testoderner1/test1.cpp
    prj/testoderner2/test2.h
    prj/testoderner2/test2.cpp
    prj/testoderner3/test3.h
    prj/testoderner3/test3.cpp
    prj/main.cpp
    prj/makefile.cygwin

    nun möchte ich in der Makefile die die drei test*.h und test*.cpp für mein main zusammenführen.


    meine Makefile.cygwin sieht so aus :

    Code:
    TARGET_ARCH = cygwin
    
    CC     = g++
    OPT    = #-O3
    DEBUG  = -g
    OTHER  = #-Wall
    #CFLAGS = $(OPT) $(OTHER)
    CFLAGS = $(DEBUG) $(OTHER)
    
    MODULE = run
    SRCS = main.cpp test1.cpp test2.cpp test3.cpp
    OBJS = $(SRCS:.cpp=.o)
    HDRS = test1.h test2.h test3.h
    include Makefile.defs

    die Makefile .defs die includiert wird sieht so aus :

    Code:
    ## Variable that points to SystemC installation path
    SYSTEMC = /usr/local/systemc
    MATLAB  = C:/Programme/MATLAB/R2006a/extern
    #SYSTEMC = ../../..
    
    M_INCDIR = -I$(MATLAB)/include
    M_LIBDIR = -L$(MATLAB)/lib/win32/microsoft
    
    SC_INCDIR = -I. -I.. -I$(SYSTEMC)/include
    SC_LIBDIR = -L. -L.. -L$(SYSTEMC)/lib-$(TARGET_ARCH)
    SC_INCDIR_TLM = -I$(SYSTEMC)/TLM/tlm/
    
    OTHER_INC = -I../testoderner1/  -I../testoderner2/  -I../testoderner3/ 
    LIBS   =  -lsystemc -lm -llibeng -llibmx -llibmat $(EXTRA_LIBS)
    
    
    EXE    = $(MODULE).exe
    
    .SUFFIXES: .cc .cpp .o .x
    
    $(EXE): $(OBJS) $(SYSTEMC)/lib-$(TARGET_ARCH)/libsystemc.a 
    	$(CC) $(CFLAGS) $(SC_INCDIR) $(SC_INCDIR_TLM) $(M_INCDIR) $(SC_LIBDIR) $(M_LIBDIR) $(OTHER_INC) -o $@ $(OBJS) $(LIBS) 2>&1 | c++filt
    
    .cpp.o : $(HDRS)
    	$(CC) $(CFLAGS) $(SC_INCDIR) $(SC_INCDIR_TLM) $(M_INCDIR) $(OTHER_INC) -c $<
    
    .cc.o : $(HDRS)
    	$(CC) $(CFLAGS) $(SC_INCDIR) $(SC_INCDIR_TLM) $(M_INCDIR) $(OTHER_INC) -c $<
    
    clean::
    	rm -f $(OBJS) *~ $(EXE) core
    
    ultraclean: clean
    	rm -f Makefile.deps


    dann rufe ich die Makefile.cygwin mit folgnden Befehl auf:

    make -f Makefile.cygwin

    leider kommt nun der Fehler :

    "No rule to make target test1.o" .....

    (wenn ich die Datei test1.cpp und test1.h in den gleichen ordneer wie main.cpp kopiere funktioniert es)

    vielleicht kann mir hier ja jemadn weiterhelfen, oder bin ich im flaschen forum ?

    Danke euch,
    chris

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74
    sorry,
    ich recherchiere hier grad ein bischen weiter ... und da is mir aufgefallen das es so sogar gehen müsste .... allerdings hab ich bei der orderstruktur im beispiel einen kleinen fehler gemacht:

    und zwar sieht das so aus:


    prj/testoderner1/test1.h
    prj/testoderner1/test1.cpp
    prj/testoderner2/test2.h
    prj/testoderner2/test2.cpp
    prj/testoderner3/test3.h
    prj/testoderner3/test3.cpp
    prj/main/main.cpp
    prj/main/makefile.cygwin

    deswegen auch die ../ in der Makefile um eine ebene Höher zu wechseln.

    Chris

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •