PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : *cpp Dateien in verschiedenen ordnern probleme mit makefile



chris21
22-05-2007, 14:13
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 :


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 :


## 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

chris21
22-05-2007, 14:35
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