- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 5 von 5

Thema: makefile -> Verzeichnis für generierte Dateien

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.08.2005
    Ort
    Niederrhein
    Beiträge
    18

    makefile -> Verzeichnis für generierte Dateien

    Anzeige

    E-Bike
    Hallo,

    weiß jemand wie man im makefile ein Verzeichnis definieren kann wo die *.o und *.lst Dateien abgelegt werden können ?

    Es ist irgendwie unübersichtlich, wenn die generierten Files immer in dem gleichen Verzeichnis liegen wie die *.c und *.h Files.

    viele Grüße
    camrob

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    16.05.2005
    Beiträge
    8
    hallo!

    kann da wirklich keiner einen tipp zu abgeben?? ich fänd das nämlich auch grade unwahrscheinlich spannend zu wissen..

    mein begrenztest verständis von make treibt mich grade in den wahnsinn...

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Eigentlich macht man das genau andersrum:

    Das Makefile steht in dem Verzeichnis, in das erzeugt werden soll und die Quellen woanders (zB eine Ebene höher).
    Code:
    # The project's base name
    PRG				= eBook
    
    # C sources that make up the project
    SRC				= main.c ...
    
    # we run on an AVR ATmega8
    MCU_TARGET		= atmega8	
    
    
    OPTIMIZE		= -Os 
    INCLUDES		= -I../include
    
    
    DEFS			= -DF_CPU=8000000
    
    CC				= avr-gcc -mmcu=$(MCU_TARGET)
    LD             	= $(CC)
    OBJCOPY        	= avr-objcopy
    OBJDUMP        	= avr-objdump
    
    # Targets dealing with C sources
    .PHONY: all size lst text eeprom depend 
    
    # clean targets
    .PHONY: clean
    
    CFLAGS			= -Wall $(OPTIMIZE) $(DEFS) $(INCLUDES) -Winline -fno-keep-inline-functions -fno-common
    LDFLAGS			= -Wl,-Map,$(PRG).map -Wl,-section-start=.eeprom=0x810001
    ASMFLAGS		= -dp -save-temps -fverbose-asm
    
    # object and assembler files. we build *.o out of *.s (not *.c)
    OBJ				= $(patsubst %.c, %.o, $(SRC))
    ASM				= $(patsubst %.c, %.s, $(SRC))
    
    all: depend $(ASM) $(PRG).elf lst text eeprom
    
    depend: 
    	$(CC) -MM  $(addprefix ../, $(SRC)) -mmcu=$(MCU_TARGET) $(DEFS) $(INCLUDES) |\
    		sed -e 's/\.o:/.s:/' > .depend
    
    size: 
    	avr-size -x $(OBJ)
    	@echo AVR $(MCU_TARGET) Memory Usage:
    	@avr-size -C --mcu=$(MCU_TARGET) $(PRG).elf | grep -E '^(Data)|(Pro)'
    
    $(PRG).elf: $(OBJ) 
    	$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
    
    -include .depend
    
    %.s: ../%.c Makefile
    	$(CC) -S $< -o $@ $(ASMFLAGS) $(CFLAGS) 
    
    %.o: %.s
    	$(CC) -x assembler $< -c -o $@ 
    
    # Rules to clean up
    
    clean:
    	rm -f .depend $(wildcard *.o *.s *.i *.map *.lst *.elf *.hex *.map *~ ../*~)
    
    # Rules to generate disassembly
    
    lst: $(PRG).lst
    
    %.lst: %.elf
    	$(OBJDUMP) -h -S -j .data -j .eeprom -j .text $< > $@
    
    # Rules for building the .text rom images
    
    text: $(PRG).hex
    
    %.hex: %.elf
    	$(OBJCOPY) -j .text -j .data -O ihex $< $@
    
    # Rules for building the .eeprom rom images
    
    eeprom: $(PRG)_eeprom.hex
    
    %_eeprom.hex: %.elf
    	$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=1 -O ihex $< $@
    
    # Rules with avrdude
    reset:
    	$(AVRDUDE)
    
    burn: 
    	$(AVRDUDE) -V -U flash:w:"$(PRG).hex"
    
    burn-all: 
    	$(AVRDUDE) -V -U flash:w:"$(PRG).hex" -U eeprom:w:"$(PRG)_eeprom.hex"
    Disclaimer: none. Sue me.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    16.05.2005
    Beiträge
    8
    ah... cool...

    danke, das muss ich erstmal in ruhe auseinanderbauen

    ich war nur auf die idee gekommen, weil die heises das bei dem ct-bot projekt so hinbekommen haben, aber das ist wohl eher eine feature der entwicklungsumgebung (eclipse) als eine errungeschaft des makefiles, wie?

    irgendwie stolpert man immer von einer sprache zur nächsten...

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    aber das ist wohl eher eine feature der entwicklungsumgebung (eclipse) als eine errungeschaft des makefiles, wie?
    Quatsch,
    was hat das mit eclipse oder mit make zu tun ?

    Wenn Du unbedingt sowas haben mußt, leg Du in Deinem Projektverzeichnis einen Ordner und schreib Dir im Makefile am Schluß von all:
    Code:
    mv *.lst *.lss *.map deinordner
    Software is like s e x: its better when its free.
    Linus Torvald

Berechtigungen

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

12V Akku bauen