Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Makefile: Inputfiles in anderem Ordner als Outputfiles

  1. #1
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549

    Makefile: Inputfiles in anderem Ordner als Outputfiles

    hallo,

    ich habe Probleme mit den Makfile-Suffixregeln. Mein Makefile sieht gekürzt so aus:
    Code:
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.06.2003
    Beiträge
    73
    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

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    eigentlich schon - nur macht es so gar nichts mehr

    den Fehler poste ich, wenn ich wieder @home bin

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    ich komm nicht mehr mit

    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...
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

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