Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Makefile Variable im Target überschreiben

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.10.2000
    Ort
    Köln
    Beiträge
    30

    Makefile Variable im Target überschreiben

    Hallo zusammen,

    Ausgangslage:
    Make File zur Kompilierung eines Programms mit in dateien Ausgelagerten Compileroptionen. Diese Oprionen werden am Anfang vom Makefile mittels include gesetzt.
    Make: GNU Make 3.80

    Aufgabe:
    Durch anderen Make Aufruf das Programm mit anderen Kompilerschaltern kompilieren

    Ansatz:
    zuätzliches target "opt" bei dem die Variable mit den Kompilerschaltern überschrieben wird und dann aufruf von all.

    Probleme:
    Wenn ich Variablenzuweisung und Targetaufruf (all) zusammenpacke bekomme ich "make: all: Kommando nicht gefunden"

    Wenn ich die Variablenzuweisung in ein eigenes Target (opt_var) packe und dann all aufrufe
    Code:
    opt: opt_var all
    
    opt_var:
            CFLAGS+=$(CFLAGS_OPT)
    kommt die Variable nicht an

    Hat jemand tips für mich wie ich Die Aufgabe noch bewältigen kann ?

    Danek im Vorraus
    Wenn was absolut nicht funktioniert nenn es Windows *gg*

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Weil all ein (unique) Parameter ist der in jedem Makefile als Standard erwartet wird mußt du es so schreiben.

    Code:
    # -opt: opt_var all
    all:  opt_var
    
    opt_var:
            CFLAGS+=$(CFLAGS_OPT)
    Alternative siehe die info Pages "/make/Phony Targets"
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.10.2000
    Ort
    Köln
    Beiträge
    30
    hab mich leider eine Weile krankheitsbedingt nicht drum kümmern können, aber sehe das ich oben veleicht etwas zu wenig Infos geliefert habe. Ein "all" Target existiert und bei dem code handelt es sich nur um einen auszug.

    Wobei das all target auch nur ein aufruf von weiteren targets ist.
    Code:
    all: generate library utility
    bzw in den übergeordneten Verzeichnissen nach dem Muster aufgebaut ist
    Code:
    all:
            cd lib; $(MAKE) all 2>&1 | tee Make.p >> ../Make.p
            ...
    nach wie vor habe ich das Problem das die Ergänzug der Variable sich nicht so recht Targetabhängig einbinden lässt
    Wenn was absolut nicht funktioniert nenn es Windows *gg*

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.10.2000
    Ort
    Köln
    Beiträge
    30
    Geil nach Weiteren suchen bin ich doch noch im Netz fündig geworden
    des Problems Lösung lautet target-specific variable value

    Anbei ein kleines Beispiel dazu
    Code:
    CFLAGS=-g
    all:
            CFLAGS=-O3
            cc $(CFLAGS) -o test main.c
            
    test: test2 
    
    test2: CFLAGS+=-O2
    test2: all
    Wenn was absolut nicht funktioniert nenn es Windows *gg*

Lesezeichen

Berechtigungen

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