Zapoznanie z programem make i zasadami jego wykorzystania do zarz dzania projektami zªo»onymi z wielu plików.

Podobne dokumenty
Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

Zbuduj mi ten projekt, prosz.

Programowanie Proceduralne

Przykªadowe tematy z JiMP

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Tworzenie oprogramowania

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Lab. 02: Algorytm Schrage

SFML. (Simple and Fast Multimedia Library)

Bazy danych, 4. wiczenia

X11R5. .Xresources. Pliki konfiguracyjne X-Windows. Zasada działania X11. .xinitrc. X protocol X server. X client. X library

Helena Boguta, klasa 8W, rok szkolny 2018/2019

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

XML. 6.6 XPath. XPath is a syntax used for selecting parts of an XML document

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

Logika rozmyta typu 2

****/ZN/2012. if you are pregnant or breast-feeding.

Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

J zyk C dla sterowników programowalnych GeFanuc

deep learning for NLP (5 lectures)


ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

EaglePCB_2_FreeCAD (beta)

Zarządzanie sieciami telekomunikacyjnymi

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Programowanie i struktury danych

1. Wprowadzenie do C/C++

TTIC 31210: Advanced Natural Language Processing. Kevin Gimpel Spring Lecture 9: Inference in Structured Prediction

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Podstawy modelowania w j zyku UML

Programowanie niskopoziomowe

Pobieranie argumentów wiersza polecenia

Wst pna instrukcja u»ytkowania sªowników w formacie DICT za pomoc edytora GNU Emacs 21 z pakietem lookup

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Instalacja programów Ubuntu

1. Wprowadzenie do C/C++

%$-,./+,-.0! Nazwy programów, polece, katalogów, wyniki działania wydawanych polece.

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Model obiektu w JavaScript

1. Podstawy budowania wyra e regularnych (Regex)

Programowanie wspóªbie»ne

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

Maszyna stanu State Machine

Projekt konceptualny z Baz Danych "Centralny system zarz dzania salami na AGH"

Aplikacje internetowe i rozproszone - laboratorium

OpenSSL - CA. Kamil Bartocha November 28, Tworzenie CA przy użyciu OpenSSL

Bash - instrukcje warunkowe, pętle i funkcje

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.


Sieciowa komunikacja procesów - XDR i RPC

Makroekonomia Zaawansowana

WPROWADZENIE DO INFORMATYKI

Lekcja 12 - POMOCNICY

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

y = The Chain Rule Show all work. No calculator unless otherwise stated. If asked to Explain your answer, write in complete sentences.

Zbiory i odwzorowania

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Automatyzacja zarządzania złożonymi programami

RS868v3 module configuration

Rozwi zywanie Ukªadów Równa«Liniowych Ax=B metod dekompozycji LU, za pomoc JAVA RMI

Rev Źródło:

Środowisko programisty Zestaw 4

Fragment wykładu z języka C ( )

Programowanie wspóªbie»ne

LZNK. Rozkªad QR. Metoda Householdera

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Stargard Szczecinski i okolice (Polish Edition)

Podstawy modelowania w j zyku UML

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Instrukcja obsługi User s manual

European Crime Prevention Award (ECPA) Annex I - new version 2014

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Język PL/SQL Procedury i funkcje składowane

How to share data from SQL database table to the OPC Server? Jak udostępnić dane z tabeli bazy SQL do serwera OPC? samouczek ANT.

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

WinAVR, Eclipse, AVR8 Burn-O-Mat niezb dne narz dzia programistyczne dla mikrokontolerów z rodziny AVR.

EC4P Pierwszy program w 6 krokach

Administracja serwerami

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Autotools. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Pakiety podprogramów Dynamiczny SQL

Arrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Lekcja 3 Banki i nowe przedmioty

Systemy Operacyjne. Ćwiczenia

Automatyzacja procesu publikowania w bibliotece cyfrowej

Lekcja 5 Programowanie - Nowicjusz

Transkrypt:

Wprowadzenie do make Cel wykªadu Zapoznanie z programem make i zasadami jego wykorzystania do zarz dzania projektami zªo»onymi z wielu plików. Wprowadzenie 1. Przeznaczenie make: organizacja wielu plików ¹ródªowych w jeden projekt; umo»liwienie automatycznej propagacji zmian w plikach ¹ródªowych do nalnego kodu; 2. Organizacja: makefile program" opisuj cy które pliki zale» od których i w jaki sposób; 3. Przykªad: Wyobra¹my sobie,»e chcemy zgrupowa pewne u»yteczne funkcje w jeden plik, skompilowa je i u»ywa ju» w postaci skompilowanej przez pozostaªy okres studiów. Mo»emy np. utworzy z tych funkcji plik utils.c (i oczywi±cie stosowny plik utils.h), skompilowa go: cc -c -o utils.o utils.c Je»eli potem b dziemy chcieli u»ywa funkcji z biblioteki utils, powiedzmy,»e w programie zawartym w pliku project.c, to mo»emy skompilowa go nast puj co cc -c -o project.o project.c cc -o project project.o utils.o lub cc -o project project.c utils.o Mo»na przedstawi zale»no±ci mi dzy plikami projektu w formie nast puj cego diagramu. Zmiany w tre±ci plików powinny by propagowane w projekcie zgodnie z kierunkiem strzaªek project.c --->--- project.o ->- \ +--->--- project / utils.c ---->---- utils.o ->- 4. Je»eli projekt skªadaªby si z wi kszej ilo±ci plików, to trudno ±ledzi wszystkie powi zania do tego wªa±nie sªu»y make. 1

5. Dla naszego przykªadowego projektu mo»emy utworzy plik opisuj cy przedstawione powy»ej powi zania. Program make czyta taki plik i uaktualnia wszystkie pliki projektu tak, aby nie byªy one starsze ni» pliki, od których zale». Plik opisuj cy nazywamy gwarowo makele i zwykle te» nosi on tak nazw : makefile lub Makefile. Struktura makefile Makefilemo»e skªada si z: 1. reguª prostych (lub explicite) (ang. explicit rules) 2. reguª domy±lnych (ang. implicit rules) 3. denicji zmiennych 4. dyrektyw: include, if, define 5. komentarzy Przykªadowy makefile dla opisanego powy»ej projektu mo»e wygl da jak nast puje: project: project.o utils.o cc -o project project.o utils.o project.o: project.c cc -c -o project.o project.c utils.o: utils.c cc -c -o utils.o utils.c Plik ten skalda si z samych reguª prostych. Rozwa»my np. reguª project: project.o utils.o cc -o project project.o utils.o Skªada si ona z: celu (ang. target) (tu project) zako«czonego dwukropkiem. Po dwukropku wyst puje lista zale»no±ci (ang. depedencies) to znaczy plików, od których zale»y cel. W nast pnej linii rozpoczynaj si komendy (ang. commands), które prowadz od zale»no±ci do celu. Uwaga: komendy s poprzedzane tabulatorem a nie spacjami! Wywoªanie programu make: make project Spowoduje sprawdzenie dat ostatnich modykacji wszystkich plików i, w razie takiej potrzeby, przebudowanie projektu. Zapomnieli±my tu jeszcze o pliku utils.h, od którego zale» oczywi±cie zarówno utils.c jak i project.c. Stosowne modykacje wprowadzimy do kolejnej wersji makefile: 2

# nasz przykladowy makefile HEADERS = utils.h project: project.o utils.o cc -o project project.o utils.o project.o: project.c $(HEADERS) cc -c -o project.o project.c utils.o: utils.c $(HEADERS) cc -c -o utils.o utils.c W pliku tym pokazano dodatkowo wykorzystanie zmiennej (HEADERS) i komentarz. Cele puste Przyjrzyjmy si innemu plikowi makefile: all: build install build: myprog yourprog myprog: main.o utils.o cc -o myprog main.o utils.o main.o: main.c utils.h cc -c -o main.o main.c utils.o: utils.c utils.h cc -c -o utils.o utils.c yourprog: yourmain.o utils.o cc -o yourprog yourmain.o utils.o install: cp myprog /usr/local/bin/ cp yourprog /usr/share/bin/ W pliku tym wyst puj cele puste (ang. dummy targets lub phony targets), które nie s nazwami plików. Sªu» one tylko do organizacji celów w struktury. Wi cej o komendach Czasem aby zbudowa jaki± cel nale»y wykona wi cej ni» jedn komend. makedopuszcza tak mo»liwo±, np: projekty: formularz.tex ${TEMATY} latex formularz bibtex formularz latex formularz latex formularz../bib/projekty_c.bib 3

make przerywa dziaªanie gdy jaka± komenda zwróci sygnaª o wyst pieniu bª du. Mo»emy zabezpieczy sie przed tak ewentualno±ci, np: test: -mkdir./test cp dane test/dane randomize test/dane prog < test/dane > test/wyniki Znak "-" przed poleceniem mkdir zabezpiecza nas przed przerwaniem dzia- ªania make w sytuacji, gdy podkatalog test juz istnieje. Zmienne Zmienne pozwalaj parametryzowa makefile tak, aby np. zmienia. Rozpatrzmy np. projekt ªatwiej je byªo CC = /usr/bin/gcc CFLAGS = -Wall LIB = ar BASEDIR = /usr/local PROGDIR = $(BASEDIR)/bin LIBDIR = $(BASEDIR)/lib all: build install build: myprog mylib myprog: main.o utils.o $(CC) $(CFLAGS) -o myprog main.o utils.o main.o: main.c utils.h $(CC) $(CFLAGS) -c -o main.o main.c utils.o: utils.c utils.h $(CC) $(CFLAGS) -c -o utils.o utils.c math.o: math.c math.h utils.h $(CC) $(CFLAGS) -c -o math.o math.c mylib: utils.o math.o $(LIB) -c libmy.a utils.o math.o install: cp myprog $(PROGDIR) cp mylib $(LIBDIR) 4

Wielopoziomowe makefile Komenda makefile mo»e rekursywnie wywoªywa make. Mo»na to wykorzysta przy tworzeniu projektów skªadaj cych si z kilku cz ±ci. Rozpatrzmy dla przykªadu projekt, który skªada si z kilku aplikacji: prepro, sim i viewer. Kod projektu b dzie przechowywany w nast puj cym drzewie katalogów: app---+---prepro +---sym +---viewer Odpowiednie pliki makefile zostan umieszczone we wszystkich katalogach. Na przykªad plik umieszczony w katalogu gªównym (app) mógªby wygl da nast puj co: BINDIR = /usr/local/bin all: ( cd prepro; make all ) ( cd sim; make all ) ( cd viewer; make all ) install: ( cd prepro; make install BINDIR=${BINDIR} ) ( cd sim; make install BINDIR=${BINDIR} ) ( cd viewer; make install BINDIR=${BINDIR} ) clean: ( cd prepro; make clean ) ( cd sim; make clean ) ( cd viewer; make clean ) Ten makefile jedynie uruchamia make w poszczególnych pod-katalogach. Plik makefile w katalogu sim mógªby wygl da nast puj co: BINDIR = /usr/bin all: simulator simulator: main.o fem.o reader.o cc -o simulator main.o fem.o reader.o install: cp simulator ${BINDIR} clean: -rm simulator *.o 5

GNU make GNU make to szeroko rozpowszechniony, przeno±ny program public domain stanowi cy jednocze±nie bardzo dobry przykªad make. Wyposa»ony w wiele bardzo wygodnych mechanizmów. GNU make komendy domy±lne Przeanalizujmy nast puj cy przykªad: objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) main.o : defs.h kbd.o : defs.h command.h command.o : defs.h command.h display.o : defs.h buffer.h insert.o : defs.h buffer.h search.o : defs.h buffer.h files.o : defs.h buffer.h command.h utils.o : defs.h.phony : clean clean : -rm edit $(objects) Nie ma tu komend opisuj cych jak zrobi pliki ".o" z plików ".c". GNUmake wie" jak nale»y to zrobi. Tego typu domy±lne reguªy s pobierane z plików konguracyjnych. GNU make grupowanie w/g zale»no±ci makefile analogiczny do poprzedniego mo»emy te» zapisa nast puj co: objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) $(objects) : defs.h kbd.o command.o files.o : command.h display.o insert.o search.o files.o : buffer.h.phony : clean clean : -rm edit $(objects) 6

Teraz jest ono pogrupowane wedªug zale»no±ci a nie wedªug celów. GNU make.phony Je»eli jaki± cel nie jest nazw pliku to mo»emy to jawnie podkre±li, okre±laj c go jako.phony. Zabezpiecza to nas przed nieoczekiwanym dziaªaniem make w sytuacji, gdyby w katalogu pojawiª si plik o takiej nazwie. GNU make puste pliki-cele Czasem korzystne jest stosowanie pustych plików-celów, które sªu» tylko jako agi. Pokazuje to poni»szy przykªad, który wykorzystuje plik-ag o nazwie print do zaznaczenia, które pliki ¹ródªowe byªy ju» drukowane: print: *.c lpr -p $? touch print Trzeba jeszcze doda,»e automatyczna zmienna $? przechowuje wszystkie zale»no±ci, które s nowsze od celu. GNU make wbudowane cele specjalne Pewne nazwy maj specjalne znaczenie, je±li wyst puj jako cele:.phony zale»no±ci tego celu to cele, których komendy b d wykonywane zawsze;.suffixes lista przyrostków u»ywanych przy poszukiwaniu reguª przyrostkowych;.default komendy wyspecykowane po tym celu s wykonywane dla wszystkich celów, dla których nie znaleziono»adnych celów;.precious je»eli make zostanie zabite w trakcie robienia tak zadeklarowanego celu, to cel nie jest usuwany;.ignore ignorowane s bª dy w komendach dla tak zadeklar. celu;.silent make nie pokazuje ±ladu wykonywania komend dla takiego celu; GNU make wildcards print: *.c lpr -p $? touch print clean: rm -f *.o Rozwini cie wildcards nie nast puje przy podstawieniu do zmiennej, tzn. objects = *.o 7

nada zmiennej objects warto± "*.o". Rozwini cie mo»e natomiast wyst pi pou»yciu takiej zmiennej w komendzie, np.: rm $objects Czasem dogodnie jest u»ywa funkcji: objects := $(wildcard *.o) objects := $(pathsubst %.c,%.o,$(wildcard *.c)) GNU make wiele celów w jednej linii bigoutput littleoutput : text.g generate text.g -$(subst output,,$@) > $@ GNU make reguªy ze statycznym wzorcem objects = foo.o bar.o all: $(objects) $(objects): %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ GNU make u»ycie rekursywne subsystem: cd subdir && $(MAKE) subsystem: $(MAKE) -C subdir GNU make define define run-yacc yacc $(firstword $^) mv y.tab.c $@ endef... foo.c : foo.y $(run-yacc) 8

GNU make zmienne rozwijane rekursywnie foo = $(bar) bar = $(ugh) ugh = Huh? all:;echo $(foo) Wydrukuje Huh? CFLAGS = $(include_dirs) -O include_dirs = -Ifoo -Ibar GNU make zmienne rozwijane natychmiast x := foo y := $(x) bar x := later jest równowa»ne y := foo bar x := later GNU make zmienne deniowane warunkowo i dodawanie do zmiennych FOO?= bar jest równowa»ne ifeq ($(origin FOO), undefined) FOO = bar endif objects += inny.o objects := $(objects) jeszcze_inny.o GNU make katalog reguª domy±lnych C n.c n.o : $(CC) -c $(CPPFLAGS) $(CFLAGS) C++ n.cc lub n.c n.o : $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) Pascal n.p n.o : $(PC) -c $(PFLAGS) Fortan (Ratfor) 9

Modula-2 Asembler Linker Yacc Lex TEX TEXinfo i Info GNU make katalog zmiennych dla reguª domy±lnych AR AS CC CXX CPP FC LEX PC YACC MAKEINFO TEX TEXI2DVI WEAVE ARFLAGS ASFLAGS CFLAGS CXXFLAGS CPPFLAGS FFFLAGS LFLAGS PFLAGS YFLAGS GNU make ªa«cuchy reguª domy±lnych Je»eli plik mo»na utworzy z innego przy pomocy sekwencji reguª domy±lnych, to GNUmake tak wªa±nie zrobi. Powstaj ce przy okazji pliki przej±ciowe s tworzone w razie potrzeby i usuwane po tym, jak ju» nie s potrzebne. GNU make reguªy wzorcowe %.o : %.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ Robi jeden object z wszystkich plików wej±ciowych GNU make podsumowanie Wszystkie poleceniagnumake: define variable endef Dene a multi-line, recursively-expanded variable. Sequences. ifdef variable ifndef variable ifeq (a,b) 10

ifeq "a" "b" ifeq 'a' 'b' ifneq (a,b) ifneq "a" "b" ifneq 'a' 'b' else endif Conditionally evaluate part of the makele. Conditionals. include le Include another makele. Include,,Including Other Makeles. override variable = value override variable := value override variable += value override dene variable endef export Dene a variable, overriding any previous denition, even one from the command line. Override Directive,,The override Directive. Varia- Tell make to export all variables to child processes by default. bles/recursion,, Communicating Variables to a Sub-make. export variable export variable = value export variable := value export variable += value unexport variable Tell make whether or not to export a particular variable to child processes. Variables/Recursion,, Communicating Variables to a Sub-make. vpath pattern path Specify a search path for les matching a % pattern. Selective Search,, The vpath Directive. vpath pattern Remove all search paths previously specied for pattern. vpath Remove all search paths previously specied in any vpath directive. Funkcje do manipulacji tekstem $(subst \var{from},\var{to},\var{text}) Replace from with to in text. Text Functions,, Functions for String Substitution and Analysis. 11

$(patsubst \var{pattern},\var{replacement},\var{text}) Replace words matching pattern with replacement in text. Text Functions,, Functions for String Substitution and Analysis. $(strip \var{string}) Remove excess whitespace characters from string. Text Functions,, Functions for String Substitution and Analysis. Text Func- $(findstring \var{find},\var{text}) Locate nd in text. tions,, Functions for String Substitution and Analysis. $(filter \var{pattern}\dots{},\var{text}) Select words in text that match one of the pattern words. Text Functions,, Functions for String Substitution and Analysis. $(filter-out \var{pattern}\dots{},\var{text}) Select words in text that do not match any of the pattern words. Text Functions,, Functions for String Substitution and Analysis. $(sort \var{list}) Sort the words in list lexicographically, removing duplicates. Text Functions,, Functions for String Substitution and Analysis. $(dir \var{names}\dots{}) Extract the directory part of each le name. File Name Functions,,Functions for File Names. $(notdir \var{names}\dots{}) Extract the non-directory part of each le name. File Name Functions,,Functions for File Names. $(suffix \var{names}\dots{}) Extract the sux (the last. and following characters) of each le name. File Name Functions,,Functions for File Names. $(basename \var{names}\dots{}) Extract the base name (name without sux) of each le name. File Name Functions,,Functions for File Names. $(addsuffix \var{suffix},\var{names}\dots{}) Append sux to each word in names. File Name Functions,,Functions for File Names. $(addprefix \var{prefix},\var{names}\dots{}) Prepend prex to each word in names. File Name Functions,,Functions for File Names. $(join \var{list1},\var{list2}) Join two parallel lists of words. File Name Functions,,Functions for File Names. $(word \var{n},\var{text}) Extract the nth word (one-origin) of text. File Name Functions,,Functions for File Names. $(words \var{text}) Count the number of words in text. File Name Functions,,Functions for File Names. $(firstword \var{names}\dots{}) Extract the rst word of names. File Name Functions,,Functions for File Names. $(wildcard \var{pattern}\dots{}) Find le names matching a shell le name pattern (not a % pattern). Wildcard Function,,The Function wildcard. 12

$(shell \var{command}) Execute a shell command and return its output. Shell Function,, The shell Function. $(origin \var{variable}) Return a string describing how the make variable variable was dened. Origin Function,, The origin Function. $(foreach \var{var},\var{words},\var{text}) Evaluate text with var bound to each word in words, and concatenate the results. Foreach Function,,The foreach Function. Zmienne automatyczne: $@ The le name of the target. $% The target member name, when the target is an archive member. $< The name of the rst dependency. $? The names of all the dependencies that are newer than the target, with spaces between them. For dependencies which are archive members, only the member named is used (Archives). $^ $+ The names of all the dependencies, with spaces between them. For dependencies which are archive members, only the member named is used (Archives). The value of $^ omits duplicate dependencies, while $+ retains them and preserves their order. $* The stem with which an implicit rule matches (Pattern Match,,How Patterns Match). $(@D) $(@F) The directory part and the le-within-directory part of $@. $(*D) $(*F) The directory part and the le-within-directory part of $*. $(%D) $(%F) The directory part and the le-within-directory part of $%. $(<D) $(<F) The directory part and the le-within-directory part of $<. $(^D) $(^F) The directory part and the le-within-directory part of $^. $(+D) 13

$(+F) The directory part and the le-within-directory part of $+. $(?D) $(?F) The directory part and the le-within-directory part of $?. Zmienne specjalne u»ywane przez GNUmake: MAKEFILES VPATH SHELL Makeles to be read on every invocation of make. MAKEFILES Variable,,The Variable MAKEFILES. Directory search path for les not found in the current directory. General Search,, VPATH Search Path for All Dependencies. The name of the system default command interpreter, usually /bin/sh. You can set SHELL in the makele to change the shell used to run commands. Execution,,Command Execution. MAKESHELL MAKE On MS-DOS only, the name of the command interpreter that is to be used by make. This value takes precedence over the value of SHELL. Execution,,MAKESHELL variable. The name with which make was invoked. Using this variable in commands has special meaning. MAKE Variable,,How the MAKE Variable Works. MAKELEVEL The number of levels of recursion (sub-makes). Variables/Recursion. MAKEFLAGS The ags given to make. You can set this in the environment or a makele to set ags. Options/Recursion,,Communicating Options to a Sub-make. MAKECMDGOALS CURDIR The targets given to make on the command line. Setting this variable has no eect on the operation of make. Goals,,Arguments to Specify the Goals. Set to the pathname of the current working directory (after all -C options are processed, if any). Setting this variable has no eect on the operation of make. Recursion,,Recursive Use of make. SUFFIXES The default list of suxes before make reads any makeles. 14