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ä
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...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.