<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://update.proggen.org/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://update.proggen.org/feed.php">
        <title>proggen.org make</title>
        <description></description>
        <link>http://update.proggen.org/</link>
        <image rdf:resource="http://update.proggen.org/lib/tpl/proggenY/images/favicon.ico" />
       <dc:date>2026-04-19T10:59:56+0200</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:advanced&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:comments&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:dependencies&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:files&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:multipletargets&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:phony&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:start&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:targets&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:variables&amp;rev=1663868366"/>
                <rdf:li rdf:resource="http://update.proggen.org/doku.php?id=make:why&amp;rev=1663868366"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://update.proggen.org/lib/tpl/proggenY/images/favicon.ico">
        <title>proggen.org</title>
        <link>http://update.proggen.org/</link>
        <url>http://update.proggen.org/lib/tpl/proggenY/images/favicon.ico</url>
    </image>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:advanced&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:advanced</title>
        <link>http://update.proggen.org/doku.php?id=make:advanced&amp;rev=1663868366</link>
        <description>Fortgeschrittene Techniken

Irgendwann kommt jeder einmal an den Punkt an dem er sich nicht mehr mit einfachen Makefiles zufrieden gibt, die nur der Reihe nach Sourcefiles kompilieren. Wenn du das hier liest bist du sicher bereits zu dem Schluss gelangt, das mehr möglich sein muss, und es doch praktisch wäre gewisse Dinge zu automatisieren. Genau aus diesem Grund haben wir hier eine Sammlung von Techniken erstellt, die helfen können das Leben des Programmierers zu automatisieren.</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:comments&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:comments</title>
        <link>http://update.proggen.org/doku.php?id=make:comments&amp;rev=1663868366</link>
        <description>Kommentare

Kommentare sind erforderlich, um Skripte zu strukturieren und um Skripte zu kommentieren.

Kommentare sind Zeilenweise zu setzen, Blöcke können nicht auskommentiert werden. Das Kommentar-Zeichen ist der Hash ('#').


##
## Dies ist eine MakeSkript
## (w) Sascha Atrops 2009
#################################################################

...

# Kommentar
...

##
## Hier wird folgendes erzeugt:
## ...
################################################################

...</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:dependencies&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:dependencies</title>
        <link>http://update.proggen.org/doku.php?id=make:dependencies&amp;rev=1663868366</link>
        <description>Abhängigkeiten formulieren

Möchte man Abhängigkeiten definieren, so werden die Abhängigkeiten hinter den Namen des Ziels beschrieben.


##
## Spaghetti kochen für Make-Anfänger
############################################

all: eat

buyspaghetti:
	@echo &quot;Spaghetti kaufen&quot;;
	
spaghetti: buyspaghetti pot
	@echo &quot;Spaghetti in Topf füllen&quot;;

pot: 
	@echo &quot;Topf nehmen&quot;;
	
water: pot
	@echo &quot;Wasser in Topf füllen&quot;;

salt: pot
	@echo &quot;Salz in Topf füllen&quot;;

cook: water salt spaghetti
	@echo &quot;Nudeln ko…</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:files&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:files</title>
        <link>http://update.proggen.org/doku.php?id=make:files&amp;rev=1663868366</link>
        <description>Dateien

In den bisherigen Makefiles wurden Ziele frei benannt. Ein Makefile soll jedoch etwas erzeugen und so ist der Name eines Ziels auch gleich der Name einer Datei. (sofern es nicht mit .PHONY deklariert sind).

In den bisherigen Dataien wurde darauf überhaupt keine Rücksicht genommen. Zeit es besser zu machen. Nehmen wir uns unser vorheriges Skript vor:</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:multipletargets&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:multipletargets</title>
        <link>http://update.proggen.org/doku.php?id=make:multipletargets&amp;rev=1663868366</link>
        <description>Mehrere Ziele definieren

Make erlaubt ja mehr als ein Ziel zu definieren. Nehmen wir nun an, dass wir zwei Ziele haben. Diese können einfach untereinander geschrieben werden:

ziel:
	@echo &quot;Ziel wird erstellt&quot;;
	
goal:
	@echo &quot;Goal under construction&quot;;</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:phony&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:phony</title>
        <link>http://update.proggen.org/doku.php?id=make:phony&amp;rev=1663868366</link>
        <description>Phony: Pseudoziele

Im Skript aus dem vorherigen Kapitel ist ein eigentlich ein Fehler drin.

CC = gcc
CFLAGS = -Wall
LDFLAGS = -lm
OBJECTS = myprogram.o extention.o

all: myprogram

myprogram.o: myprogram.c myprogram.h
	@$(CC) $(CFLAGS) $(LDFLAGS) -o $myprogram.o myprogram.c
extention.o: extention.c extention.h myprogram.h
	@$(CC) $(CFLAGS) $(LDFLAGS) -o $extention.o extention.c

myprogram: $(OBJECTS)
	@$(CC) $(CFLAGS) $(LDFLAGS) -o myprogram $(OBJECTS)</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:start&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:start</title>
        <link>http://update.proggen.org/doku.php?id=make:start&amp;rev=1663868366</link>
        <description>Makefiles

Es dauert noch ein bischen, bis dieses Kapitel geschrieben wird. 
Hier sind Verweise auf bereits bestehende Tutorials zum Thema Makefiles:

Einstieg

	*  Wozu Make?

Grundlagen

	*  Kommentare
	*  Ziele formulieren
	*  Mehrere Ziele formulieren
	*  Abhängigkeiten formulieren
	*  Variablen definieren

Dateien und Regeln

	*  Dateien 
	*  Phony: Pseudoziele
	*</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:targets&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:targets</title>
        <link>http://update.proggen.org/doku.php?id=make:targets&amp;rev=1663868366</link>
        <description>Ziele formulieren

Ein Ziel ist BatchSkript mit einem Namen.
Hierfür wird der Name des Ziels an den Anfang der Zeile geschrieben und mit einem Doppelpunkt versehen. Ab der nächsten Zeile schreibt man nun das BatchSkript.
Wichtig: Das Batch-Skript muss mit einem</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:variables&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:variables</title>
        <link>http://update.proggen.org/doku.php?id=make:variables&amp;rev=1663868366</link>
        <description>Variablen definieren

Innerhalb von Make lassen sich Variablen definieren. Damit lassen sich die Skripte vor ihrer Ausführung manipulieren. Nehmen wir das erste echte Skript, das wir gesehen habe:


program:
	@gcc -o myprogram myprogram.c


Variablen werden am Zeilenanfang geschrieben und ihnen wird mit '=' ein Wert zugewiesen. Es gibt einige Standard-Variablen, die in nahezu allen Skripts auftauchen:</description>
    </item>
    <item rdf:about="http://update.proggen.org/doku.php?id=make:why&amp;rev=1663868366">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T19:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make:why</title>
        <link>http://update.proggen.org/doku.php?id=make:why&amp;rev=1663868366</link>
        <description>Wozu make?

make ist ein kleines nützliches Programm, mit dem man 
Skripte basierend auf Abhängigkeiten automatisieren kann.

Ein Skript ist normalerweise ein oder mehrere Kommandos, die man in eine Batch-Datei schreibt.

Ein für Programmierer üblicher Vorgang ist, den Aufruf für den Compiler in ein Skript zu fassen. Ein einzelnes Batch-Skript ist allerdings sehr aufwendig, wenn es Abhängigkeiten prüfen soll. 
make ist eine Vereinfachung, so dass Programmierer ihre Skripte mit weniger Aufwand fo…</description>
    </item>
</rdf:RDF>
