Makefile - verschiedene Verzeichnisse



  • Hallo,
    ich habe momentan dieses Makefile:

    CC           = g++           # use GNU C++ compiler
    CC-FLAGS     = -Wall -c      # warn all
    LD       = g++           # use GNU C++ as linker 
    LD-FLAGS = -shared -o   # flags for linker (-o must be last)
    RM           = rm -f         # how to remove files
    MAKE         = make          # name of make utility 
    OBJS         = lgui.o LuaControls.o LuaControl.o GTKControl.o PageControl.o ListView.o Buttons.o Splitter.o Menu.o Dialogs.o TextControls.o Container.o
    TARGET       = gui.so        # name of executable
    #LUA_PATH     = /usr/src/scite/scite_ru_older/src/scite/lua
    LUA_PATH     = ./Scite_patch/scite_src/src/scite/lua
    LUA_INCS     = -I$(LUA_PATH)/include -I$(LUA_PATH)/src
    GTK_INC      = `pkg-config --cflags --libs gtk+-2.0`
    
    INC          = $(LUA_INCS) $(GTK_INC)
    
    $(TARGET): $(OBJS)
    	$(LD) $(INC) $(LD-FLAGS) $@ $(OBJS)
    
    #create from all *.cxx the .o with same basename
    #.cxx.o:
    %.o : %.cxx
    	$(CC) $(INC) $(CC-FLAGS) $<
    
    clean:
    	$(RM) *.o
    

    dies hat den Vorteil, dass ich nur oben die Quell-Objecte für den linker angebe und diese aus den gleichnamigen cxx-dateien generiert.

    nun möchte ich die Verzeichnis-Struktur ändern. die lgui.cxx soll eine Verzeichnisebene höher liegen. ich schreibe also "../lgui.o"
    ich habe es schon hinbekommen, dass alles soweit kompiliert wird, jedoch scheitert es am linken, da der compiler die o-datei ins gleiche verzeichnis schmeist, wie die restlichen (sie ist also nicht unter ../ zu finden)

    Wie kann ich das am besten lösen?

    Gruß Frank



  • hat niemand eine idee?





  • Ich verwende autoconf/automake. Da funktioniert alles automatisch. Na ja - nicht alles, aber so ein paar Dinge jedenfalls.


Anmelden zum Antworten