Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Automake, Target mit mehreren Abhaengigkeiten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    23.11.2004
    Ort
    Hamburg
    Beiträge
    279

    Automake, Target mit mehreren Abhaengigkeiten

    Moin, moin,

    ich versuche gerade in einem Makefile.am (Automarke) was zu schreiben um mit R Plots in PDF zu übersetzen. Das Problem ist, dass ich auf biegen und brechen die Abhängigkeit zu den Daten nicht reinbekomme.

    Bisher habe ich folgendes:

    SUFFIXES = .R .pdf

    .R:
    Mache R Script ausfuehrbar

    .R.pdf:
    Fuehre R Script aus ;-)

    Was muss ich machen, damit das PDF auch vom Datenfile abhängt?
    Sowas wie
    .R.pdf: DATENFILE
    Fuehre R Script aus
    Klappt nicht. Oder sowas wie
    .data.pdf:
    ...
    bringe ich auch nicht ans laufen.
    Hat irgendwer ne Idee?

    mfg,

    bienchen

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Das ist eher eine Bash als Automake frage.
    Das Zauberwort ist Variablen expandierung.
    Code:
    SCRIPT = echo
    
    all: info pdf
    
    info: *.R
    	@echo "ARRAY Inhalt:" $?
    	@echo "Zeiger auf Rule:" $@
    
    pdf: *.R
    	@echo "Start:"
    	@for i in $? ; do \
    		$(SCRIPT) $$i $${i/.R/}.$@ ; \
    	done
    Der Grund warum deine .SUFFIX Versuche nicht hinhauen liegt daran.
    Das diese Arbeitsweise ein interne Compiler Erweiterung erwartet z.B. C/C++ auf ein TARGET oder Programm.



    Siehe auch die Infopages "info make/Automatic Variables"
    Geändert von undefined (05-11-2011 um 17:16 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.11.2004
    Ort
    Hamburg
    Beiträge
    279
    Hallo zurueck,

    Das mit der Variablenexpansion ist mir schon bewusst. Das mit dem Suffix klappt zumindest fuer .R und .pdf. Und *.R als Dependance anzugeben, geht doch auch alle Files mit Endung R im Verzeichnes, nicht blos auf ein bestimmtes, oder? Ich möchte ja nicht jedes mal alle Plots neu erstellen, sondern lediglich jene, fuer welche sich auch etwas geändert hat.

    mfg,

    bienchen

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Du hast nicht verstanden was ich Dir in meinem Beitrag der letzten Zeile mitgeteilt habe.
    Nochmal:
    Es ist Notwendig das du Automake mitteilst:
    Das es sich um ein Ziel Target handelt (z.B. Programm Bibliothek Script Datenziel etc.). Ansonsten Ignoriert Automake deine Eingabe.

    1. Variante mit Datenangabe
    Code:
    ## Makefile.am
    
    AM_DEFAULT_SOURCE_EXT = .R
    
    pdfdir = @datadir@/projekt
    pdf_DATA = 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf  6.pdf  7.pdf  8.pdf  9.pdf
    
    %.pdf: %.R
    	@echo "Generate " $@
    	@echo $< > $@

    2. Beispiel mit FAKE Targets und eigener Installations Routine in einer Multi Umgebung (weitere andere Targets)
    Code:
    ## Makefile.am
    
    AM_DEFAULT_SOURCE_EXT = .R
    
    noinst_SCRIPTS = 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf  6.pdf  7.pdf  8.pdf  9.pdf
    
    %.pdf: %.R
    	@echo "Generate " $@
    	@echo $< > $@
    
    
    install:
    	@mkdir -p $(DESTDIR)/$(datadir)/projekt
    	@install -m 0644 $(noinst_SCRIPTS) $(DESTDIR)/$(datadir)/projekt
    
    uninstall:
    	@for i in $(noinst_SCRIPTS) ; do \
    		rm -fv $(DESTDIR)/$(datadir)/projekt/$$i; done
    Was deine Frage zu Änderungen erkennen betrifft siehe AM_SANITY_CHECK
    Geändert von undefined (06-11-2011 um 07:16 Uhr) Grund: Multible Umgebung
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.11.2004
    Ort
    Hamburg
    Beiträge
    279
    Aber bei
    %.pdf: %.R
    Regeln habe ich das Problem, dass das GNU-Extensions sind, bei welchen Automarke aussteigt.
    Weil dann könnte ich ja
    %.pdf: %.R %.data
    sagen, oder?

  6. #6
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Also Irgendwie kommt bei dir immer wieder was neues dazu
    Guckst Du hier und hier
    Geändert von undefined (06-11-2011 um 11:26 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

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