<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FW%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach%2Fmakefile</id>
	<title>TI/Włączanie kodu w innych językach/makefile - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=TI%2FW%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach%2Fmakefile"/>
	<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/W%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach/makefile&amp;action=history"/>
	<updated>2026-05-03T19:57:27Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/W%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach/makefile&amp;diff=1975&amp;oldid=prev</id>
		<title>Jarekz: /* Reguła .PHONY */</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/W%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach/makefile&amp;diff=1975&amp;oldid=prev"/>
		<updated>2015-05-23T14:07:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Reguła .PHONY&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Wersja z 14:07, 23 maj 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l224&quot; &gt;Linia 224:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 224:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;.PHONY: all clean&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;.PHONY: all clean&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[category:Programowanie II]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[category:Pojedynczy problem]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=TI/W%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach/makefile&amp;diff=1974&amp;oldid=prev</id>
		<title>Jarekz: Utworzono nową stronę &quot;==Krótkie wprowadzenie do makefile'a== [http://www.gnu.org/software/make/manual/html_node/index.html Manual]  Make jest programem komputerowym automatyzującym proces k...&quot;</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=TI/W%C5%82%C4%85czanie_kodu_w_innych_j%C4%99zykach/makefile&amp;diff=1974&amp;oldid=prev"/>
		<updated>2015-05-23T14:07:34Z</updated>

		<summary type="html">&lt;p&gt;Utworzono nową stronę &amp;quot;==Krótkie wprowadzenie do makefile&amp;#039;a== [http://www.gnu.org/software/make/manual/html_node/index.html Manual]  Make jest programem komputerowym automatyzującym proces k...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Krótkie wprowadzenie do makefile'a==&lt;br /&gt;
[http://www.gnu.org/software/make/manual/html_node/index.html Manual]&lt;br /&gt;
&lt;br /&gt;
Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.&lt;br /&gt;
&lt;br /&gt;
Program przetwarza plik reguł Makefile i na tej podstawie stwierdza, które pliki źródłowe wymagają kompilacji. Oszczędza to wiele czasu przy tworzeniu programu, ponieważ w wyniku zmiany pliku źródłowego kompilowane są tylko te pliki, które są zależne od tego pliku. Dzięki temu nie ma potrzeby kompilacji całego projektu.&lt;br /&gt;
&lt;br /&gt;
Make nadaje się również do innych prac, które wymagają przetwarzania wielu plików zależnych od siebie.&lt;br /&gt;
&lt;br /&gt;
Program został pierwotnie stworzony przez dr. Stuarta I. Feldmana w 1977 roku, który pracował w owym czasie w Bell Labs.&lt;br /&gt;
&lt;br /&gt;
Istnieje kilka wersji make jak np.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	BSD make&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	GNU make&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	Microsoft make&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	Borland make&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W make &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; zamienia tekst w komentarze.&lt;br /&gt;
&lt;br /&gt;
===Typowa reguła programu make===&lt;br /&gt;
&lt;br /&gt;
składnia&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;cel:składniki&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;    komenda&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Uwaga: wcięcia robimy tabulatorem (inaczej się nie uda). Na końcu makefile'a musi być znak przejścia do nowej linii.&lt;br /&gt;
&lt;br /&gt;
Przykładowa reguła:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
hello: hello.cc pisz.cc&lt;br /&gt;
	g++ hello.cc pisz.cc -o hello&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reguła ta określa sposób tworzenia pliku wykonywalnego hello z plików &amp;lt;tt&amp;gt;hello.cc&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;pisz.cc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Więcej reguł:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
hellobis: hellobis.o pisz.o&lt;br /&gt;
	gcc hellobis.o pisz.o -o hellobis&lt;br /&gt;
&lt;br /&gt;
hellobis.o: hellobis.cc&lt;br /&gt;
	gcc -c hellobis.cc -o hellobis.o&lt;br /&gt;
&lt;br /&gt;
pisz.o: pisz.c&lt;br /&gt;
	gcc -c pisz.cc -o pisz.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
W tym wypadku głównym plikiem docelowym jest plik &amp;lt;tt&amp;gt;hellobis&amp;lt;/tt&amp;gt;. Jego składniki to pliki&amp;lt;tt&amp;gt; hellobis.o&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;pisz.o&amp;lt;/tt&amp;gt;. Make szuka tych plików w katalogu bieżącym, jeśli jednak ich nie znajdzie to szuka reguł, które podają sposób w jaki te pliki utworzyć. W powyższym przykładzie są to dwie kolejne reguły. Make korzysta z nich, żeby utworzyć składniki reguły głównej i dopiero wtedy może utworzyć główny plik docelowy hellobis&lt;br /&gt;
&lt;br /&gt;
===Zmienne w pliku Makefile===&lt;br /&gt;
&lt;br /&gt;
W pliku Makefile można definiować zmienne, tak jak w poniższym przykładzie:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
OBJS=hellobis.o pisz.o&lt;br /&gt;
&lt;br /&gt;
hellobis: $(OBJS)&lt;br /&gt;
	g++ $(OBJS) -o hellobis&lt;br /&gt;
&lt;br /&gt;
hellobis.o: hellobis.cc&lt;br /&gt;
	g++ -c hellobis.cc -o hellobis.o&lt;br /&gt;
&lt;br /&gt;
pisz.o: pisz.cc&lt;br /&gt;
	g++ -c pisz.cc -o pisz.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W tym przykładzie zdefiniowana została zmienna o nazwie OBJS i nadana jej została wartość '&amp;lt;tt&amp;gt;hellobis.o pisz.o&amp;lt;/tt&amp;gt;'. Odwołanie do zdefiniowanej zmiennej odbywa się przy pomocy znaku dolara i nawiasów okrągłych. W tym przypadku raz zdefiniowana zmienna została użyta dwukrotnie. Jeśli będziemy chcieli dodać coś do listy składników pliku hellobis to dzięki użyciu zmiennej wystarczy to zrobić raz - w definicji zmiennej &amp;lt;tt&amp;gt;OBJS&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Zmienne standardowe===&lt;br /&gt;
&lt;br /&gt;
W Makefile można używać wielu zmiennych zdefiniowanych standardowo. Najczęściej używane zmienne standardowe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;CC&amp;lt;/tt&amp;gt; &amp;amp;mdash; nazwa kompilatora języka &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;CXX&amp;lt;/tt&amp;gt; &amp;amp;mdash; nazwa kompilatora języka &amp;lt;tt&amp;gt;C++&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; &amp;amp;mdash; opcje kompilatora języka &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;CXXFLAG&amp;lt;/tt&amp;gt;S &amp;amp;mdash; opcje kompilatora języka &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;LFLAGS&amp;lt;/tt&amp;gt; &amp;amp;mdash; opcje dla linkera&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zmienne standardowe mają pewną predefiniowaną wartość (np. zmienna &amp;lt;tt&amp;gt;CC&amp;lt;/tt&amp;gt; ma predefiniowaną wartość '&amp;lt;tt&amp;gt;cc&amp;lt;/tt&amp;gt;'), którą jednak można zmieniać. Oto przykład:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
CXX=g++&lt;br /&gt;
CXXFLAGS=-g&lt;br /&gt;
OBJS=hellobis.o pisz.o&lt;br /&gt;
&lt;br /&gt;
hellobis: $(OBJS)&lt;br /&gt;
	$(CXX) $(LFLAGS) $(OBJS) -o hellobis&lt;br /&gt;
&lt;br /&gt;
hellobis.o: hellobis.cc&lt;br /&gt;
	$(CXX) $(CXXFLAGS) -c hellobis.cc -o hellobis.o&lt;br /&gt;
&lt;br /&gt;
pisz.o: pisz.cc&lt;br /&gt;
	$(CXX) $(CXXFLAGS) -c pisz.cc -o pisz.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Zmienne automatyczne===&lt;br /&gt;
&lt;br /&gt;
Zmienne automatyczne są to specjalne zmienne, które przechowują wartości zmieniające się dynamicznie w trakcie wykonywania Makefile'a, np. nazwa pliku docelowego aktualnie przetwarzanej reguły. Najczęściej używane zmienne automatyczne:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;&amp;lt;&amp;lt;/tt&amp;gt; &amp;amp;mdash; aktualnie przetwarzany plik z listy składników (patrz przykład)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;@&amp;lt;/tt&amp;gt; &amp;amp;mdash; nazwa pliku docelowego&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;tt&amp;gt;^&amp;lt;/tt&amp;gt; &amp;amp;mdash; składniki&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
CXX=g++&lt;br /&gt;
CXXFLAGS=-g&lt;br /&gt;
OBJS=hellobis.o pisz.o&lt;br /&gt;
&lt;br /&gt;
hellobis: $(OBJS)&lt;br /&gt;
	$(CXX) $(LFLAGS) $^ -o $@&lt;br /&gt;
&lt;br /&gt;
hellobis.o: hellobis.cc&lt;br /&gt;
	$(CXX) $(CXXFLAGS) -c $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
pisz.o: pisz.cc&lt;br /&gt;
	$(CXX) $(CXXFLAGS) -c $&amp;lt; -o $@&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Więcej o regułach===&lt;br /&gt;
====Reguły z wzorcem====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
CXX=g++&lt;br /&gt;
CXXFLAGS=-g&lt;br /&gt;
OBJS=hellobis.o pisz.o&lt;br /&gt;
&lt;br /&gt;
hellobis: $(OBJS)&lt;br /&gt;
	$(CXX) $(LFLAGS) $^ -o $@&lt;br /&gt;
&lt;br /&gt;
$(OBJS):%.o:%.cc&lt;br /&gt;
	$(CXX) -c $(CXXFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Reguły domyślne====&lt;br /&gt;
&lt;br /&gt;
Make posiada pewne standardowe reguły do tworzenia pewnych typów plików. W poniższym przykładzie pominięto regułę tworzenia plików '.o' z plików '.c'. Make posiada jednak standardowe, domyślne reguły tworzenia plików .o. W tym przypadku make odnajdzie w katalogu bieżącym pliki '.c', z których utworzy pliki '.o' przy pomocy polecenia &amp;lt;tt&amp;gt;'$(CXX) -c'.]&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
CXX=g++&lt;br /&gt;
CXXFLAGS=-g&lt;br /&gt;
OBJS=hellobis.o pisz.o&lt;br /&gt;
&lt;br /&gt;
hellobis: $(OBJS)&lt;br /&gt;
	$(CXX) $(LFLAGS) $^ -o $@&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Reguła clean====&lt;br /&gt;
&lt;br /&gt;
Każdy dobry plik makefile powinien posiadać regułę, która usuwa pliki pośrednie, tymczasowe, etc. powstałe podczas kompilacji. W powyższych przykładach plikami pośrednimi są pliki '&amp;lt;tt&amp;gt;.o&amp;lt;/tt&amp;gt;'. Powszechnie przyjęło się, że taka reguła ma nazwę '&amp;lt;tt&amp;gt;clean&amp;lt;/tt&amp;gt;'. Oto przykład:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
CXX=g++&lt;br /&gt;
CXXFLAGS=-g&lt;br /&gt;
OBJS=hellobis.o pisz.o&lt;br /&gt;
&lt;br /&gt;
hellobis: $(OBJS)&lt;br /&gt;
	$(CXX) $(LFLAGS) $^ -o $@&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Zauważmy, że reguła &amp;lt;tt&amp;gt;clean&amp;lt;/tt&amp;gt; ma pustą listę składników. Aby wywołać regułę &amp;lt;tt&amp;gt;clean&amp;lt;/tt&amp;gt; używamy polecenia &amp;lt;tt&amp;gt;make clean&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Więcej plików wynikowych====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
CXX=g++&lt;br /&gt;
&lt;br /&gt;
all: prog1 prog2&lt;br /&gt;
&lt;br /&gt;
prog1: prog1.c&lt;br /&gt;
	$(CXX) $(CXXFLAGS) $(LFLAGS) prog1.cc -o prog1&lt;br /&gt;
	&lt;br /&gt;
prog2: prog2.c&lt;br /&gt;
	$(CXX) $(CXXFLAGS) $(LFLAGS) prog2.cc -o prog2&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f prog1.o prog2.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Reguła &amp;lt;tt&amp;gt;.PHONY&amp;lt;/tt&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
Reguły &amp;lt;tt&amp;gt;clean&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;all&amp;lt;/tt&amp;gt; są regułami specjalnymi w tym sensie, że &amp;lt;tt&amp;gt;clean&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;all&amp;lt;/tt&amp;gt; nie są nazwami plików. Gdyby jednak zdarzyło się, że w katalogu bieżącym istnieje plik o nazwie &amp;lt;tt&amp;gt;all&amp;lt;/tt&amp;gt; lub &amp;lt;tt&amp;gt;clean&amp;lt;/tt&amp;gt; to reguły te mogłyby nie działać! Aby temu zapobiec trzeba by poinstruować make'a, że &amp;lt;tt&amp;gt;all&amp;lt;/tt&amp;gt; i &amp;lt;tt&amp;gt;clean&amp;lt;/tt&amp;gt; nie są nazwami plików. Do tego celu służy specjalna reguła o nazwie &amp;lt;tt&amp;gt;.PHONY&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
CXX=g++&lt;br /&gt;
&lt;br /&gt;
all: prog1 prog2&lt;br /&gt;
&lt;br /&gt;
prog1: prog1.c&lt;br /&gt;
	$(CXX) $(CXXFLAGS) $(LFLAGS) prog1.cc -o prog1&lt;br /&gt;
	&lt;br /&gt;
prog2: prog2.c&lt;br /&gt;
	$(CXX) $(CXXFLAGS) $(LFLAGS) prog2.cc -o prog2&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f prog1.o prog2.o&lt;br /&gt;
&lt;br /&gt;
.PHONY: all clean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[category:Programowanie II]]&lt;br /&gt;
[[category:Pojedynczy problem]]&lt;/div&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
</feed>