Announcement

Collapse
No announcement yet.

makefile für linux und win funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • makefile für linux und win funktioniert nicht

    Hallo,
    ich hoffe mal ich bin hier im richtigen Bereich gelandet. Ich habe ein C++ Programm (geschrieben unter Linux in Eclipse) das mit einem makefile erstellt wird. Ich möchte jetzt dieses Programm zu Windows transportieren. Also Eclipse für Windows installiert und den cygwin Compiler dazu.
    Jetzt habe ich mein makefile, das unter Linux traumhaft läuft:

    Code:
    PROJEKT:=h8flash
    
    CC:=g++
    SIZE:=size
    OBJCOPY:=objcopy
    
    INCLUDE:=$(HOME)/workspace
    ZW_VERZ:=$(HOME)/obj/$(PROJEKT)
    # Variable f�r die Obj-Dateien
    
    PROJEKT_VERZ:=$(HOME)/workspace/$(PROJEKT)
    # Variable f�r den C_Code Pfadnamen
    #ZW_VERZ:=$(PROJEKT_VERZ)
    
    STD_VERZ:=$(INCLUDE)/std
    # Variable f�r die Standardroutinen
    
    optionen= -I$(INCLUDE) -g -fshort-enums -Os -Wunused -Wshadow -Wswitch -Wparentheses -Wall -W -Werror
    
    DATEIEN:=$(ZW_VERZ)/flash.o\
    $(ZW_VERZ)/protokoll.o\
    $(ZW_VERZ)/crc32.o\
    $(ZW_VERZ)/SerialStream.o\
    $(ZW_VERZ)/SerialStreamBuf.o\
    
    $(PROJEKT_VERZ)/$(PROJEKT) : $(ZW_VERZ)/$(PROJEKT)
    	cp $< $@  
    	
    $(ZW_VERZ)/$(PROJEKT): $(DATEIEN) makefile
    	$(CC) $(CONTROLLER) -WL, -Wl,-O1 -o $@ \
    $(DATEIEN)\
    
    # libc\
    # libc++
    
    $(ZW_VERZ)/%.o : $(PROJEKT_VERZ)/%.cpp $(ZW_VERZ)/%.d makefile
    	$(CC) -c -o $@ $(optionen) $<
    
    $(ZW_VERZ)/%.d : $(PROJEKT_VERZ)/%.cpp  
    	$(CC) $(optionen) -MM $< \
    	| sed 's|\($*\)\.o[ :]*|\1.o $@ : |g' > $@; \
    	[ -s $@ ] || rm -f $@
    
    $(ZW_VERZ)/%.o : $(STD_VERZ)/%.cpp $(ZW_VERZ)/%.d makefile
    	$(CC) -c -o $@ $(optionen) $<
    
    $(ZW_VERZ)/%.d : $(STD_VERZ)/%.cpp
    	$(CC) $(optionen) -MM $< \
    	| sed 's|\($*\)\.o[ :]*|\1.o $@ : |g' > $@; \
    	[ -s $@ ] || rm -f $@
     
    include $(DATEIEN:$(ZW_VERZ)/%.o=$(ZW_VERZ)/%.d)
    	
    all : $(PROJEKT_VERZ)/$(PROJEKT)
    
    clean :
    	rm $(ZW_VERZ)/*.o
    	rm $(ZW_VERZ)/*.d
    
    install :
    	mkdir $(ZW_VERZ)
    Wenn ich dieses File jetzt unter Windows benutze, jammert der Compiler rum er würde /home/olsk/.... (die DATEIEN von oben)
    nicht finden. $(HOME) habe ich unter Linux verwenden können. Da ist mein Homeverzeichnis /home/olsk/ mit dem workspace Verzeichnis und dem obj Verzeichnis drin.
    kann Windows das nicht interpretieren??? Und wieso weiß Windows meinen Linux Home Pfad??? Den habe ich nicht angegeben.

    Die Versuche $(HOME) mit D:/eclipse/ und auch "D:/eclipse/" zu ersetzen schlugen fehl.
    Dann folgte die Meldung ***target pattern contains no `%'. Stop.
    Googlen half diesbezüglich auch nichts, da Antworten waren immer mehr als dürftig oder auf andere Probleme zurückzuführen.

    Wo liegt mein Problem. Kann mir jemand einen Tipp geben??? Danke

  • #2
    Auch hallo,

    nur eine Vermutung: statt / muss \ in den Pfadangaben verwendet werden.
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Also ich habe aus Verzweifelung alle Varianten ausprobiert: / \ mit "" ohne "" ....
      Habe sogar den Homepfade (D:\HOME) als Home in die autoexec.bat geschrieben.... nichts.

      Comment

      Working...
      X