PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makefile: Inputfiles in anderem Ordner als Outputfiles



peschmae
06-06-2003, 11:42
hallo,

ich habe Probleme mit den Makfile-Suffixregeln. Mein Makefile sieht gekürzt so aus:


SRC_PATH=..\..\..\sources
OBJ_DIR=obj

.SUFFIXES:
.SUFFIXES: .o .java

.java.o:
kompiliere sourcefiles von $(SRC_PATH) zu .o in $(OBJ_DIR)

all: objects

objects: \
${SRC_PATH}\ProgramFile1 \
${SRC_PATH}\ProgramFile2 \
etc


nun werden aber immer alle ProgrammDateien kompiliert, und nicht nur die, die es nötig haben.
Wie bringe ich dem Teil bei, dass die Object-Dateien im Ordner $(OBJ_DIR) und nicht in
$(SRC_PATH) liegen?

MfG Peschmä

peschmae
17-06-2003, 09:07
hmm...

laut der Info - Page von make gelten Suffixregeln als depreceated...

aber mit den neuen "implicit rules" krieg ichs auch nicht hin...

kennt irgendwer ein Gratis-Buch wo alles über make drinsteht? Ein gutes ANT-Tutor wär auch nicht schlecht, denn wenn ich ant endlich mal nur ein kleines bisserl kapieren würde, würde ich es auch verwenden...

MfG Peschmä

almoeli
18-06-2003, 12:55
Hi,

ich verstehe das mit der Angabe deienr Object nicht so ganz. Warum schreibst du:

objects: \
${SRC_PATH}\ProgramFile1 \
${SRC_PATH}\ProgramFile2 \
etc

Das exe das du erzeugst, ist ein einziges (jburner.exe) und das besteht aus mehreren .o Objektdateien welche in OBJ_DIR liegen. Also müßten deine objects so angegeben werden:

objects: \
${OBJ_PATH}\Modul1.o \
${OBJ_PATH}\Modul2.o \
etc

Die Dateien ${SRC_PATH}\ByteArrayTransfer wird vom Makefile nie erzeugt. Jedenfalls sehe ich keine Regel die das Teil erzeugt. Es wird nur ${OBJ_PATH}\ByteArrayTransfer.o erzeugt welches später zum linken benutzt wird.
Dein Make erzeugt deshalb jedesmal alles neu, weil die Datei ${SRC_PATH}\ByteArrayTransfer nicht erzeugt wurde und make diese aber erwartet und nun denkt irgendeine Regel wird sie schon erstellen und halt mal alles ausführt.

Gruß

almoeli

peschmae
19-06-2003, 08:09
eigentlich schon - nur macht es so gar nichts mehr

den Fehler poste ich, wenn ich wieder @home bin

MfG Peschmä

peschmae
19-06-2003, 19:23
ich komm nicht mehr mit :D

offenbar braucht make sämtliche pfade mit / statt \ - auch unter Win***

ausserdem möchte gcj nicht

gcj --classpath=xyz;abc

sondern

gcj -Ixyz -Iabc

erhalten...

dann gehts!

MfG Peschmä

P.S. das nervt! Ich glaub ich schau mir definitiv mal ant an...